2016-02-15 03:06:34 +00:00
|
|
|
|
### 10.7.1. 工作区结构
|
2015-12-09 07:45:11 +00:00
|
|
|
|
|
2016-02-15 03:06:34 +00:00
|
|
|
|
对于大多数的Go语言用户,只需要配置一个名叫GOPATH的环境变量,用来指定当前工作目录即可。当需要切换到不同工作区的时候,只要更新GOPATH就可以了。例如,我们在编写本书时将GOPATH设置为`$HOME/gobook`:
|
2015-12-09 07:45:11 +00:00
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
$ export GOPATH=$HOME/gobook
|
|
|
|
|
$ go get gopl.io/...
|
|
|
|
|
```
|
|
|
|
|
|
2016-02-15 03:06:34 +00:00
|
|
|
|
当你用前面介绍的命令下载本书全部的例子源码之后,你的当前工作区的目录结构应该是这样的:
|
2015-12-09 07:45:11 +00:00
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
GOPATH/
|
|
|
|
|
src/
|
|
|
|
|
gopl.io/
|
|
|
|
|
.git/
|
|
|
|
|
ch1/
|
|
|
|
|
helloworld/
|
|
|
|
|
main.go
|
|
|
|
|
dup/
|
|
|
|
|
main.go
|
|
|
|
|
...
|
|
|
|
|
golang.org/x/net/
|
|
|
|
|
.git/
|
|
|
|
|
html/
|
|
|
|
|
parse.go
|
|
|
|
|
node.go
|
|
|
|
|
...
|
|
|
|
|
bin/
|
|
|
|
|
helloworld
|
|
|
|
|
dup
|
|
|
|
|
pkg/
|
|
|
|
|
darwin_amd64/
|
|
|
|
|
...
|
|
|
|
|
```
|
|
|
|
|
|
2016-02-15 03:06:34 +00:00
|
|
|
|
GOPATH对应的工作区目录有三个子目录。其中src子目录用于存储源代码。每个包被保存在与$GOPATH/src的相对路径为包导入路径的子目录中,例如gopl.io/ch1/helloworld相对应的路径目录。我们看到,一个GOPATH工作区的src目录中可能有多个独立的版本控制系统,例如gopl.io和golang.org分别对应不同的Git仓库。其中pkg子目录用于保存编译后的包的目标文件,bin子目录用于保存编译后的可执行程序,例如helloworld可执行程序。
|
2015-12-09 07:45:11 +00:00
|
|
|
|
|
2016-02-15 03:06:34 +00:00
|
|
|
|
第二个环境变量GOROOT用来指定Go的安装目录,还有它自带的标准库包的位置。GOROOT的目录结构和GOPATH类似,因此存放fmt包的源代码对应目录应该为$GOROOT/src/fmt。用户一般不需要设置GOROOT,默认情况下Go语言安装工具会将其设置为安装的目录路径。
|
2015-12-09 07:45:11 +00:00
|
|
|
|
|
2016-02-15 03:06:34 +00:00
|
|
|
|
其中`go env`命令用于查看Go语音工具涉及的所有环境变量的值,包括未设置环境变量的默认值。GOOS环境变量用于指定目标操作系统(例如android、linux、darwin或windows),GOARCH环境变量用于指定处理器的类型,例如amd64、386或arm等。虽然GOPATH环境变量是唯一必需要设置的,但是其它环境变量也会偶尔用到。
|
2015-12-09 07:45:11 +00:00
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
$ go env
|
|
|
|
|
GOPATH="/home/gopher/gobook"
|
|
|
|
|
GOROOT="/usr/local/go"
|
|
|
|
|
GOARCH="amd64"
|
|
|
|
|
GOOS="darwin"
|
|
|
|
|
...
|
|
|
|
|
```
|