環境變量設置
環境變量GO111MODULE可設置三種值:on,off,auto,off表示使用GOPATH模式,on表示開啓模塊支持,根據go.mod下載和查找依賴,auto(默認值)表示根據當前目錄啓用或禁用模塊支持,僅噹噹前目錄位於$GOPATH/src之外並且其本身包含go.mod文件或位於包含go.mod文件的目錄下時,才啓用模塊支持。
環境變量GOPROXY可設置下載依賴時使用的代理,例如“https://goproxy.io”。
在項目中使用go mod
- 在項目根目錄執行go mod init modulename初始化go mod,系統會生成一個go.mod文件。
- 然後執行go build就會自動查找和下載代碼中的依賴包,並將依賴包以及版本寫入go.mod,同時生成go.sum記錄依賴包內容的校驗值。go mod下載依賴包的原則是先拉最新的release tag,若無tag則拉最新的commit。
添加和修改依賴包
使用go get會自動下載依賴包然後更新到go.mod文件,注意go build只會將go.mod中沒有的依賴包添加進去,所以不用擔心它們衝突,go get規則如下:
- go get -u 將會升級到最新的次要版本或者修訂版本(x.y.z, z是修訂版本號, y是次要版本號)。
- go get -u=patch將會升級到最新的修訂版本。
- go get package@version 將會升級到指定的版本號。
替換依賴包
由於某些原因,並不是所有的依賴包都能成功下載,這個時候可以使用replace替換依賴包。
replace (
golang.org/x/crypto => github.com/golang/crypto v0.0.0-20181127143415-eb0de9b17e85
golang.org/x/net => github.com/golang/net v0.0.0-20181114220301-adae6a3d119a
)
replace (
golang.org/x/crypto=> ../crypto
)