Sort of. Packages are like python modules or C libraries; they provide namespace and modularity. Go is designed as a systems language like C/C++.
In normal usage, as I understand it, I clone a repo in my workspace, the $GOPATH. So travfunc is in
Code:
$GOPATH/src/github.com/makhidkarun/CE_Chargen/travfunc/travfunc.go
in $GOPATH/src there are a few repository options, github.com, golang.org for some of the base stuff and language add-ons, gopkg.in, and gopl.io. It depends on where the package is housed. That said, most seem to be on github and I'm trying to stick with those.
My CE_Chargen code uses the go-sqlite3 package, so I git clone in $GOPATH/src/github.com/mattn and get the go-sqlite3 repo. I can then, in $GOPATH, install:
Code:
go install github.com/mattn/go-sqlite3
Which gives me a static library:
Code:
pkg/linux_amd64/github.com/mattn/go-sqlite3.a
Go has pretty firm perceptions on how things should be done. Enforcing them, like directory structure, helps keep the code structured and clean. Like white space in python or "do...end" in Ruby, it's an acquired taste. The vargr_names code I wrote for Go 1.3 works under 1.8. No expected time-line for Go 2.0.
Since Rob Pike and Brian Kernighan are involved in Go, I expect good things.
