親測GO環境搭建,理解go build、go install、go get
來源:互聯網
上載者:User
前言: 秉承著作為一個新人,要有著“指哪打哪”的覺悟。在老大的需求下,頂上前端的空缺先幹陣子前端。當然,在工作之餘還是要好好朝著既定的方向努力的,實習結束後還了電腦,這次畢業再來換了新Mac,重新搭下Go的環境,順便好好總結下,以後隨著學習的深入,也會持續更新。
GO下載: GO語言中文網下載: https://studygolang.com/dl Mac下直接通過brew instatll go指令即可完成下載安裝
GO環境變數配置: $GOROOT=/usr/local/go GO安裝目錄 $GOPATH=/usr/local/var/www/go GO工作目錄 $GOBIN=$GOPATH/bin GO可執行檔目錄 $PATH=$PATH:$GOBIN:$GOROOT/bin 將GO可執行檔加入PATH中,使GO指令與我們編寫的GO應用可以全域調用
$GOPATH工作目錄結構,約定有三個子目錄(需要自行建立): src ——存放原始碼檔案 pkg——存放編譯後的檔案 bin ——存放編譯後的可執行檔
樣本(首先使用go推薦的go build方式構建應用,稍後會說到其他的方式): 通過我們的操作,在最終測試成功後,$GOPATH的分類樹應該如下所示:
具體操作如下:
1、建立應用程式套件mypkg:切到【$GOPATH/src】目錄下,建立一個mypkg目錄,在mypkg目錄下,建立一個hello.go,內容如下:
2、編譯應用程式套件(在此Demo中,此步驟並不必要,在此只是為了展示go install編譯效果):在剛剛的目錄下執行【go install】指令或者在任意目錄下執行【go install mypkg】指令,如果代碼有錯或依賴找不到會報錯,如果正確則沒有任何提示。此時,你可以切到【$GOPATH/pkg】目錄下,會發現多了一個名為【$GOOS_$GOARCH】的目錄,切進該目錄,就會看到剛剛編譯產生的檔案mypkg.a檔案。(其中$GOOS與$GOARCH的具體值可以通過【go env】指令查詢,更多詳情可參看: http://wiki.jikexueyuan.com/project/go-command-tutorial/0.14.html)
3、建立新應用程式套件myapp,建立新檔案main.go(同步驟1),import引入mypkg包,內容如下:
4、構建可執行檔:在myapp目錄下,使用【go build】指令,會在目前的目錄下產生一個myapp的可執行檔,這個可執行檔不依賴其他檔案,複製到任何目錄下都可通過【./myapp】執行,複製到任何$PATH配置的目錄中都可通過【myapp】全域執行。
總結:我們在這個Demo裡主要用到了兩個GO指令,【go install】與【go build】,他們的區別如下:
【go build】指令的作用是:在目前的目錄下編譯產生可執行檔。注意,go build指令會調用所有引用包的源碼,重新編譯,而不是直接使用pkg裡的編譯後檔案,如果在【$GOROOT】與【$GOPATH】下沒有找到import引入包的項目源碼,就會報錯。在本demo裡,main.go中import引入了"mypkg"包,如果我刪除【$GOPATH/src/mypkg】源碼,執行【go build】指令,會報錯如下:
【go install】指令的作用是:編譯原始碼,如果為可執行檔(package "main"且包含main方法),則會編譯產生可執行檔到【$GOPATH/bin】目錄下;可執行檔import引入的其他包,就會被編譯到【$GOPATH/pkg/$GOOS_$GOARCH】目錄下。 (關於go的匯入和編譯,如果有不清楚的,可以看下這篇部落格 https://studygolang.com/articles/3189)
我們會發現:【go install】也可以完成類似【go build】的功能,區別在於【go install】會產生二進位檔案到【$GOPATH/pkg/$GOOS_$GOARCH】目錄下(這個二進位檔案對於我們並沒什麼意義),但【go install】會把可執行檔自動產生到【$GOBIN】目錄下,這是在一開始被配置到【$PATH】中了,這樣就可以使項目可執行檔能被方便的全域調用。
如果在本Demo中,使用【go install】構建可執行檔: 我們編寫好原始碼檔案時,分類樹如下:
切到myapp目錄下,執行【go install】指令,會產生如下結構分類樹:
此時就可以通過【myapp】全域執行了。
其他指令: go env指令可檢查go環境
go version查看go版本
go get可以暫時理解為git clone到【$GOPATH/src】 + go install