go语言的工作区是一个目录,下边有3个主要的文件件,src用于保存源码文件,pkg用于保存二进制库文件,bin用于保存二进制可执行文件。GOPATH就是工作区的根目录。
其他语言可能是一个项目使用一个工作区,但是go建议所有项目使用同一个工作区。一个典型的go工作区目录结构:
bin/
pkg/
src/
project1/
.git/
package1/
package2/
main.go
vendor/
Gopkg.lock
Gopkg.toml
project2/
.git
...
项目在src目录下划分,代码仓库在每个项目下。package1和package2是项目project1的自定义的包,vendor用于存放project1项目的第三方代码。
Gopkg.lock和Gopkg.toml是使用Dep管理第三方库的版本相关信息和锁定。建议将所有第三方代码也提交到版本库中,因为有些第三方库下载慢或者需要翻墙才能下载。提交到代码库方便在新环境下获取。
mian.go是项目入口文件。也可以单独用一个文件夹安放,但是package的名字必须叫main。
编译命令
GOPATH如果不设定,将会提供一个默认值,可以使用go env查看。在Mac上默认值是/Users/[UserName]/go。
在GOPATH的根目录下运行go build project1,就可以编译project1项目。如果不指定输出文件,默认在当前文件夹(GOPATH)下生成一个project1的二进制可执行文件。
在GOPATH根目录下运行go install golearn1,project1项目将被编译并且生成project1的二进制文件在bin目录中。