Go Mod 是 Go 1.11 版本後推出的一種官方的包管理工具,主要目的是為了解決Go語言包依賴管理問題。與Go早期使用的依賴工具如dep和glide相比,Go Mod 更加簡單易用、易於維護,同時能夠保證項目的版本控制,讓多人協同工作更加平滑高效。
一、初始化項目
在使用 Go Mod 前需要對您的項目進行初始化,通過如下命令,Go Mod會幫您創建一個go.mod配置文件。
go mod init <module name>
其中,<module name>指的是你的go module名稱,一般來說這個名稱是你的項目所在的文件夾名稱。
通過上述命令初始化後,工具會自動的為你的項目創建一個go.mod文件,文件內容包含項目名稱、當前項目版本和根模塊聲明。
二、管理依賴包
Go Mod 的關鍵特性就是管理第三方包的依賴關係和版本,從而減輕包管理的負擔。
在初始化好項目之後,使用以下命令添加一個新的第三方依賴包到項目中:
go get <module name>
其中,<module name>指的是你需要添加的第三方依賴包名稱。如果需要添加的包依賴其他包,Go Mod會自動的解析並下載其依賴的包。
當然,Go Mod 還允許我們快速地修改導入包的版本,只需要使用以下命令即可:
go get <module name>@v<version>
其中,<version>是指需要安裝的版本號。如果是最新的版本,則輸入latest。
三、代碼重構
當我們從glide或dep轉換到Go Mod時,必須重構代碼使其變得兼容。代碼應該通過以下命令進行轉換,並通過go mod tidy 命令進行代碼清理。
- 將所有的依賴項(包)移動到相應的 go.mod 文件中。然後用 go mod tidy 刪除不需要的依賴項。
- 導入語句應該以一個底線代替 GOPATH/src。
- 引用_package以生成和存儲本地副本。
- 將 Go 版本升級至 v1.11以上(目前 Go Mod 只能支持 v1.11 以上的 Go 版本)。
四、Vendor 目錄管理
Vendor 目錄可以用來存儲第三方依賴包的源代碼。在 Go 1.11 之前,第三方依賴包可能會被放在 $GOPATH/src/ 相關目錄中,同時,在這之前傳遞依賴關係是非常麻煩的。
但是,從 Go 1.11 版本開始,Go Mod 工具被更廣泛的使用,設計者開始擴展特性以便能夠以更便攜、更可讀的方式管理第三方依賴包。為了避免伺服器端包的缺少造成的問題,Go Mod 還在 go.sum 文件中記錄了包的 Git 哈希值以及其他元數據。
通過使用 go mod vendor,您可以將當前項目的依賴項中的所有包和源代碼複製到項目的 vendor 目錄中。例如
go mod vendor
這將在項目根目錄中創建一個 vendor 子文件夾,其中包括由 go.mod 定義的所有的外部引用和它們的子鏈。
五、總結
Go官方提供的Go Mod工具是項目依賴管理和版本控制的必備工具,其優點在於方便、易用、易於維護和版本控制。 通過使用Go Mod和vendor文件夾,您可以輕鬆處理依賴項和伺服器端缺失情況。
對於Go開發的項目,我們強烈建議使用Go Mod來解決本地和伺服器上的依賴管理問題和版本控制問題。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/295675.html