Go Modules 是 Go 官方的依賴管理方案。從 Go 1.11 引入,Go 1.16 後成為預設模式。
初始化模組#
# 建立新模組
go mod init github.com/username/myproject
# 這會建立 go.mod 檔案go.mod 檔案結構#
module github.com/username/myproject
go 1.21
require (
github.com/gin-gonic/gin v1.9.1
golang.org/x/sync v0.3.0
)
require (
// 間接依賴
github.com/bytedance/sonic v1.9.1 // indirect
)常用命令#
# 下載依賴
go mod download
# 整理依賴(移除未使用的,加入缺少的)
go mod tidy
# 檢視依賴關係圖
go mod graph
# 驗證依賴完整性
go mod verify
# 把依賴複製到 vendor 目錄
go mod vendor建議在專案根目錄執行
go mod tidy自動整理依賴。它會移除未使用的依賴,並加入程式碼中引用但 go.mod 中缺少的依賴。
版本選擇規則#
Go Modules 遵循語意化版本(Semantic Versioning)規範:
v1.2.3:主版本.次版本.修訂版本- 主版本 0 或 1 時,匯入路徑不變
- 主版本 2 及以上時,匯入路徑要加入版本後綴
import (
"github.com/user/pkg" // v0.x.x 或 v1.x.x
"github.com/user/pkg/v2" // v2.x.x
"github.com/user/pkg/v3" // v3.x.x
)go.sum 檔案說明
go.sum 記錄所有依賴的加密雜湊值,用於驗證下載的模組是否被篡改:
github.com/gin-gonic/gin v1.9.1 h1:4idEAncQnU5cB7BeOkPtxjfCSye0AAm1R0RVIqFPSdI=
github.com/gin-gonic/gin v1.9.1/go.mod h1:hPrL8YrYN+...每個依賴會有兩行記錄:
- 第一行:模組內容的雜湊值
- 第二行:go.mod 檔案的雜湊值