go-mod 入門

收藏待读

Q群有人問go mod 問題,自己也忘了些.順便再整理下.

GO111MODULE可以設置為三個字符串值之一:off,on或auto(默認值)。

off 則go命令從不使用新模塊支持。它查找vendor 目錄和 go-mod 入門 GOPATH模式」。

on 則go命令需要使用模塊,go 會忽略 $GOPATH 和 vendor 文件夾,只根據go.mod下載依賴。

auto 或未設置,則go命令根據當前目錄啟用或禁用模塊支持。僅噹噹前目錄位於$GOPATH/src之外並且其本身包含go.mod文件或位於包含go.mod文件的目錄下時,才啟用模塊支持。

如果需要查看go module的詳細文檔(非常長),可以在控制台輸入

go help modules

go mod命令

download    download modules to local cache (下載依賴的module到本地cache))
edit        edit go.mod from tools or scripts (編輯go.mod文件)
graph       print module requirement graph (打印模塊依賴圖))
init        initialize new module in current directory (再當前文件夾下初始化一個新的module, 創建go.mod文件))
tidy        add missing and remove unused modules (增加丟失的module,去掉未用的module)
vendor      make vendored copy of dependencies (將依賴複製到vendor下)
verify      verify dependencies have expected content (校驗依賴)
why         explain why packages or modules are needed (解釋為什麼需要依賴)

初始化mod

go mod init [module]可以創建一個go.mod,只有一行信息module。

go命令通過查找當前目錄中的go.mod或者當前目錄的父目錄,或者祖父目錄,依次遞歸查找。

go.mod文件可以通過require,replace和exclude語句使用的精確軟件包集。

require語句指定的依賴項模塊

replace語句可以替換依賴項模塊

exclude語句可以忽略依賴項模塊

go mod download

可以下載所需要的依賴,但是依賴並不是下載到 go-mod 入門 GOPATH/pkg/mod中,多個項目可以共享緩存的module。

在國內訪問 golang.org/x 的各個包都需要翻牆,

你可以在go.mod中使用replace替換成github上對應的庫。


GOPATH模式」。  

on 則go命令需要使用模塊,go 會忽略 $GOPATH 和 vendor 文件夾,只根據go.mod下載依賴。

auto 或未設置,則go命令根據當前目錄啟用或禁用模塊支持。僅噹噹前目錄位於$GOPATH/src之外並且其本身包含go.mod文件或位於包含go.mod文件的目錄下時,才啟用模塊支持。

如果需要查看go module的詳細文檔(非常長),可以在控制台輸入

go help modules

go mod命令

download    download modules to local cache (下載依賴的module到本地cache))
edit        edit go.mod from tools or scripts (編輯go.mod文件)
graph       print module requirement graph (打印模塊依賴圖))
init        initialize new module in current directory (再當前文件夾下初始化一個新的module, 創建go.mod文件))
tidy        add missing and remove unused modules (增加丟失的module,去掉未用的module)
vendor      make vendored copy of dependencies (將依賴複製到vendor下)
verify      verify dependencies have expected content (校驗依賴)
why         explain why packages or modules are needed (解釋為什麼需要依賴)

初始化mod

go mod init [module]可以創建一個go.mod,只有一行信息module。

go命令通過查找當前目錄中的go.mod或者當前目錄的父目錄,或者祖父目錄,依次遞歸查找。

go.mod文件可以通過require,replace和exclude語句使用的精確軟件包集。

require語句指定的依賴項模塊

replace語句可以替換依賴項模塊

exclude語句可以忽略依賴項模塊

go mod download

可以下載所需要的依賴,但是依賴並不是下載到 go-mod 入門 GOPATH/pkg/mod中,多個項目可以共享緩存的module。

在國內訪問 golang.org/x 的各個包都需要翻牆,

你可以在go.mod中使用replace替換成github上對應的庫。

replace (
    golang.org/x/crypto v0.0.0-20180820150726-614d502a4dac => github.com/golang/crypto v0.0.0-20180820150726-614d502a4dac
    golang.org/x/net v0.0.0-20180821023952-922f4815f713 => github.com/golang/net v0.0.0-20180826012351-8a410e7b638d
    golang.org/x/text v0.3.0 => github.com/golang/text v0.3.0
)

go clean -modcache 清除緩存

go mod 新東西偶爾還會出現問題 ,這個命令可以嘗試修復,不過執行之前可以考慮備份一下pkg/mod中的包.以防不測.

原文 : Go語言中文網

相關閱讀

免责声明:本文内容来源于studygolang.com,已注明原文出处和链接,文章观点不代表立场,如若侵犯到您的权益,或涉不实谣言,敬请向我们提出检举。