Go語言之講解GOROOT、GOPATH、GOBIN

來源:互聯網
上載者:User

標籤:工作   golang   指定   圖片   目錄   other   arc   get   cpp   

Go是一門全新的靜態類型開發語言,具有自動記憶體回收豐富的內建類型,函數多傳回值錯誤處理匿名函數,並發編程反射等特性.

go命令依賴一個重要的環境變數:$GOPATH 
GOPATH允許多個目錄,當有多個目錄時,請注意分隔字元,多個目錄的時候Windows是分號;

當有多個GOPATH時預設將go get擷取的包存放在第一個目錄下 

$GOPATH目錄約定有三個子目錄
  • src存放原始碼(比如:.go .c .h .s等)   按照golang預設約定,go run,go install等命令的當前工作路徑(即在此路徑下執行上述命令)。
  • pkg編譯時間產生的中間檔案(比如:.a)  golang編譯包時
  • bin編譯後產生的可執行檔(為了方便,可以把此目錄加入到 $PATH 變數中,如果有多個gopath,那麼使用${GOPATH//://bin:}/bin添加所有的bin目錄)
代碼目錄結構規劃

GOPATH下的src目錄就是接下來開發程式的主要目錄,所有的源碼都是放在這個目錄下面,那麼一般我們的做法就是一個目錄一個項目,

例如: $GOPATH/src/mymath 表示mymath這個應用程式套件或者可執行應用,這個根據package是main還是其他來決定,main的話就是可執行應用,其他的話就是應用程式套件,這個會在後續詳細介紹package。

 

首先看下我的go環境:go env
C:\Users\Administrator>go envset GOARCH=amd64set GOBIN=set GOEXE=.exeset GOHOSTARCH=amd64set GOHOSTOS=windowsset GOOS=windowsset GOPATH=D:\projectset GORACE=set GOROOT=D:\BaiduNetdiskDownload\goset GOTOOLDIR=D:\BaiduNetdiskDownload\go\pkg\tool\windows_amd64set GCCGO=gccgoset CC=gccset GOGCCFLAGS=-m64 -mthreads -fmessage-length=0set CXX=g++set CGO_ENABLED=1set CGO_CFLAGS=-g -O2set CGO_CPPFLAGS=set CGO_CXXFLAGS=-g -O2set CGO_FFLAGS=-g -O2set CGO_LDFLAGS=-g -O2set PKG_CONFIG=pkg-config
GOROOT

其實就是golang 的安裝路徑
當你安裝好golang之後其實這個就已經有了

GOBIN

首先看一下結構:

我們通常是在project目錄下執行go build,例如:

D:\project\src\go_dev\day1\package_example\main>go run main.go400 100

現在需要編譯main.go,golang 會自動去src下找hello目錄,因為我的main.go中代碼的開通匯入了packag main包,所以可以編譯成可執行檔,但是這樣預設在目前的目錄下產生可執行檔,雖然可以指定目錄,但是還是感覺不是非常方便

d:\project>go build go_dev/day1/package_example\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 

參考文章地址:

https://studygolang.com/articles/7202   

http://www.cnblogs.com/zhaof/p/7906722.html

Go語言之講解GOROOT、GOPATH、GOBIN

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.