我們接下來一個一個來看關于Go語言中的三個目錄的詳細解釋
先通過go env檢視go的環境變量(我這裡是mac的環境,是以可能和你的不同)
localhost:~ zhaofan$ go env
GOARCH="amd64"
GOBIN=""
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOOS="darwin"
GOPATH="/Users/zhaofan/go_project"
GORACE=""
GOROOT="/usr/local/Cellar/go/1.9.2/libexec"
GOTOOLDIR="/usr/local/Cellar/go/1.9.2/libexec/pkg/tool/darwin_amd64"
GCCGO="gccgo"
CC="clang"
GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/b6/mc1c40c91cld67ps963_r16h0000gn/T/go-build539393745=/tmp/go-build -gno-record-gcc-switches -fno-common"
CXX="clang++"
CGO_ENABLED="1"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
localhost:~ zhaofan$
GOROOT
其實就是golang 的安裝路徑
當你安裝好golang之後其實這個就已經有了
GOPATH
go指令依賴的一個重要環境變量:$GOPATH
其實可以把這個目錄了解為工作目錄,我個人定義的目錄是:
GOPATH="/Users/zhaofan/go_project"
當然這個目錄是需要添加到環境變量中的
go_project // (go_project為GOPATH目錄)
-- bin // golang編譯可執行檔案存放路徑
-- pkg // golang編譯包時,生成的.a檔案存放路徑
-- src // 源碼路徑。按照golang預設約定,go run,go install等指令的目前工作路徑(即在此路徑下執行上述指令)。
GOBIN
首先先看一下我的目錄結構:
我們通常是在go_project目錄下執行go build,例如:
/Users/zhaofan/go_project/src/go_dev/01/hello/hello.go
我們現在要編譯hello.go檔案,我隻需要切換到
/Users/zhaofan/go_project目錄中,然後執行:
go build go_dev/01/hello
golang 會自動去src下找hello目錄,因為我的hello.go中代碼的開通導入了packag main包,是以可以編譯成可執行檔案,但是這樣預設在目前目錄下生成可執行檔案,雖然可以指定目錄,但是還是感覺不是非常友善
是以還有兩個非常好用的指令:go get 和go install
go get
go get會做兩件事:
1. 從遠端下載下傳需要用到的包
2. 執行go install
go install
go install 會生成可執行檔案直接放到bin目錄下,當然這是有前提的
你編譯的是可執行檔案,如果是一個普通的包,會被編譯生成到pkg目錄下該檔案是.a結尾
關于go的整體一個開發目錄
go_project // go_project為GOPATH目錄
-- bin
-- myApp1 // 編譯生成
-- myApp2 // 編譯生成
-- myApp3 // 編譯生成
-- pkg
-- src
-- myApp1 // project1
-- models
-- controllers
-- others
-- main.go
-- myApp2 // project2
-- models
-- controllers
-- others
-- main.go
-- myApp3 // project3
-- models
-- controllers
-- others
-- main.go
所有的努力都值得期許,每一份夢想都應該灌溉!