咱們接下來一個一個來看關於Go語言中的三個目錄的詳細解釋
先經過go env查看go的環境變量(我這裏是mac的環境,因此可能和你的不一樣)golang
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以後其實這個就已經有了post
GOPATH
go命令依賴的一個重要環境變量:$GOPATHui
其實能夠把這個目錄理解爲工做目錄,我我的定義的目錄是:
GOPATH="/Users/zhaofan/go_project"
固然這個目錄是須要添加到環境變量中的spa
go_project // (go_project爲GOPATH目錄)
-- bin // golang編譯可執行文件存放路徑
-- pkg // golang編譯包時,生成的.a文件存放路徑
-- src // 源碼路徑。按照golang默認約定,go run,go install等命令的當前工做路徑(即在此路徑下執行上述命令)。debug
GOBIN
首先先看一下個人目錄結構:code
咱們一般是在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包,因此能夠編譯成可執行文件,可是這樣默認在當前目錄下生成可執行文件,雖然能夠指定目錄,可是仍是感受不是很是方便blog
因此還有兩個很是好用的命令:go get 和go install開發
go get
go get會作兩件事:
1. 從遠程下載須要用到的包
2. 執行go installget
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