2015-12-09 07:45:11 +00:00
|
|
|
|
### 10.7.1. 工作區結構
|
|
|
|
|
|
2016-01-08 08:45:40 +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-01-08 08:45:40 +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-01-08 08:45:40 +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-01-08 08:45:40 +00:00
|
|
|
|
第二個環境變量GOROOT用來指定Go的安裝目録,還有它自帶的標準庫包的位置。GOROOT的目録結構和GOPATH類似,因此存放fmt包的源代碼對應目録應該爲$GOROOT/src/fmt。用戶一般不需要設置GOROOT,默認情況下Go語言安裝工具會將其設置爲安裝的目録路徑。
|
2015-12-09 07:45:11 +00:00
|
|
|
|
|
2016-01-08 08:45:40 +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"
|
|
|
|
|
...
|
|
|
|
|
```
|