Go Modules 模块管理
go mod init/tidy、go.sum、replace 本地替换、版本语义
Go Modules 模块管理
Go Modules(go mod)从 1.11 起是官方依赖管理方案。和 npm/pip 不同——不设中央仓库,直接从 Git 仓库拉。
学完本章你将: 掌握 go mod init/tidy、go.sum、replace、版本语义。
初始化模块
bash
# 创建模块
go mod init github.com/username/myapp
# 生成 go.mod
# module github.com/username/myapp
# go 1.22
添加依赖
go
// main.go
import "github.com/gin-gonic/gin"
func main() {
r := gin.Default()
r.GET("/", func(c *gin.Context) {
c.JSON(200, gin.H{"msg": "Hello"})
})
r.Run()
}
bash
go mod tidy # 自动下载依赖 + 更新 go.mod/go.sum
go.mod 详解
module github.com/username/myapp
go 1.22
require (
github.com/gin-gonic/gin v1.9.1
golang.org/x/text v0.14.0
)
// replace —— 本地替换(调试时非常有用)
replace github.com/xxx/yyy => ../local-yyy
// exclude —— 排除某个版本
exclude github.com/bad/lib v1.0.0
go.sum 与版本选择
bash
# go.sum —— 记录依赖的哈希值(保证完整性)
# 使用语义版本控制:v主版本.次版本.补丁
# v1.2.3 → 1(主版本) 2(次版本) 3(补丁)
# /v2 后缀表示主版本 > 1(如 github.com/foo/bar/v2)
💡 go.sum 应该提交到 Git——它保证所有人拿到完全相同的依赖版本。