
1.2 Go的工作空间
自从2009年推出Go以来,在Go开发者如何组织代码和依赖项方面发生了多次变化。由于这种重大变化,出现了许多相互矛盾的建议,而且大部分都已经过时了。
对于现代的Go开发,规则其实很简单:你可以按照合适的方式自由地组织你的项目。
然而,Go仍然希望设置一个工作空间,用于存放使用go install
安装的第三方Go工具(参见1.3.2节)。默认情况下,这个工作空间位于$HOME/go,这些第三方工具的源代码存储在$HOME/go/src,编译后的二进制文件存储在$HOME/go/bin。你可以使用默认的工作空间,也可以通过设置$GOPATH
环境变量来指定不同的工作空间。
无论你是否使用默认位置,最好显式定义GOPATH,并将$GOPATH/bin目录放在可执行路径中。显式定义GOPATH
可以明确Go工作空间的位置,而将$GOPATH/bin添加到可执行路径中可以更容易地运行通过go install
安装的第三方工具,我们将稍后讨论。
如果你在类UNIX系统上使用bash
,请在.profile中添加以下几行(如果你使用的是zsh
,请将这几行添加到.zshrc中):

你需要对$HOME/.profile执行source
命令,使这些更改在当前控制台窗口中生效。
在Windows系统中,在命令提示符下运行以下命令:

运行这些命令后,必须关闭当前的命令提示符,然后打开一个新的命令提示符,这些更改才会生效。
Go工具还使用了其他环境变量进行设置,你可以使用go env
命令来获得完整的列表以及每个变量的简要说明。其中许多变量用来控制底层行为,因此可以忽略,但是我们在讨论模块和交叉编译时,将会涉及其中的一些变量。
一些在线资源告诉你要设置GOROOT环境变量。这个变量指定了Go开发环境的安装位置。但现在已经不需要这样做了,
go
工具会自动解决这个问题。