幾個常用的環境變數
GOPATH: //go 的工作目錄
GOROOT://go 的安裝目錄
GOBIN://go 的bin檔案目錄
GO111MODULE: //go mod 開關 on為開啟go mod
GOPROXY=https://goproxy.cn,direct // https://goproxy.cn,direct 國內代理
因為國內牆的緣故,需要設定代理,這樣在Vscode安裝package時就不會失敗。go env -w GOPROXY https://goproxy.cn,direct
檢視go的設定命令go env
GOPATH
GOPATH是早期的設定方式,將工作目錄設定GOPATH到全域性環境變數。
不同的專案都在GOPATH/src/下。很顯然這種設定方法是不太方便的,因為不同專案引用的package到放到了一起,這用git管理起來很麻煩,比如A專案引用了a,b兩個package,B專案引用了c,d兩個package,那麼如果我在A中修改了package的內容,我提交A專案時想要帶著package時就很麻煩。
其次是GOPATH需要設定全域性環境變數,很多新手在對這些不熟悉的時候,很容易出錯。專案名也必須不同。否則無法區分。
Go mod
go mod 正是為了解決上述問題(並不單單是上述問題,還有依賴引用問題)。在1.13以後開始推行。因為沒多長時間,所以現在網路上的教程兩種版本的都有,很容易混淆。
go mod可以完全替代GOPATH設定。只需要 go env -w GO111MODULE=on
開啟go mod
GOPATH 與 Go mod 兩種模式的專案啟動是不相同的
go env -w GO111MODULE=off 時,在 GOPATH 的根目錄就可以直接啟動專案
go env -w GO111MODULE=off 時,需指進入專案啟動程式
呼叫第三方包的情況下,在當前目錄,即使指定了檔案路徑,仍執行失敗
進入專案目錄,啟動成功
沒有引入第三方包,指定路徑及啟動成功
吐槽一句,這種設計坑真多,小白痛不欲生。
還有就是在安裝 gin 框架的時候執行 go get -u github.com/gin-gonic/gin
總是執行失敗,不得不說,這次真是被 topgoer.com gin框架/簡介 這文件給誤導了,文件看上去挺全的,可偏偏沒詳細介紹 GOPATH 與 Go mod 的區別。
go get -u github.com/gin-gonic/gin
命令在 go mod 模式下完全沒問題,但是在 GOPATH 模式下就不正常了。
GOPATH 與 Go mod 兩種模式是不相容的,建議使用 Go mod 模式就好。
更詳細參考文件 studygolang.com/articles/28712
本作品採用《CC 協議》,轉載必須註明作者和本文連結