Go 語言程式設計 go mod 依賴包管理

2021-10-09 05:17:21 字數 2687 閱讀 2546

golang 將 modules(模組)定義為 「源**交付和版本控制的單元」。

有了 go mod 之後,每個專案(源**目錄)就是乙個 module,只要其中包含了 go.mod 檔案。go mod 指令和 go.mod 檔案用於記錄和解析模組之間的依賴性。

go.mod 檔案一旦建立後,它的內容將會被 go toolchain(工具鏈)完全掌控,比如:執行 go get、go build、go mod 等指令時,會自動修改和維護 go.mod 檔案。

除了 go.mod 之外,go 指令還維護了乙個 go.sum 檔案,其中包含特定模組版本內容的加密雜湊。go 指令使用 go.sum 檔案來確保這些模組的雜湊值,以確保專案所依賴的模組不會出現意外更改。

go.mod 和 go.sum 都應該應用於版本控制。 並且 go.sum 不需要手工維護,所以可以不用太關注。

使用 go modules 需要配置 go111module 環境變數,go111module 有三個值:off、on 和 auto(預設值):

使用 go.mod 的流程:

在 $gopath/src 目錄之外建立 golang 專案。

初始化專案的 go.mod 檔案。

$ go mod init
注意,專案下屬的子目錄是不需要再次 init 的,整個專案的依賴都會組織在根目錄的 go.mod 檔案裡。

匯入外部包:

檢查 go.mod 檔案中自動更新的依賴清單:

)其中 require 是乙個關鍵字,此外還有 module、replace 和 exclude:

replace 語句常用於依賴包實際路徑變更的場景中,例如:

replace golang.org/x/text => github.com/golang/text latest
如此的,在這種情況下依賴包的維護會變得更簡單。

還需要注意 go.mod 中的module hello這一條語句,因為當前專案已經不在 $gopath/src 內了,所以module hello標註了專案 「根」 的路徑,以此來作為專案中其他包的根路徑。

go mod init
# 在專案目錄下執行

go mod download

注:目前所有模組版本資料均快取在 $gopath/pkg/mod 和 $gopath/pkg/sum 下。

Go包管理go mod使用

為了解決go包管理的問題,go從1.11開始加入了go modules這一新特性。讓包的依賴和版本管理更加容易。乙個module可以理解為乙個單獨的包或者模組,module的根目錄下會包含乙個go.mod檔案。go.mod檔案中定義了該module被其它包import的path,同時也包含了該mod...

Go mod 之 Golang依賴包管理

如果你還在使用 gopath 模式來開發golang程式,那麼你可以參考本文來告別 gopath,並帶給你乙個方便的包管理工具。使用go mod 管理專案,就不需要非得把專案放到gopath指定目錄 直接使用命令 go mod init 目錄名稱 看到提示 go creating new go.mo...

Go模組簡明教程 Go語言依賴包管理工具

go模組是go語言的依賴包管理工具。1 go1.11及以後版本才能使用。2 go1.11需要設定環境變數 go111module 為 on 新特性開關,按照go語言慣例,mod首次在go1.11版本中使用,go1.12及以後版本這個設定應該不會用了 mod是模組英文modules的簡寫。列舉一些常用...