Go Modules - 模块管理
Go Modules 是 Go 的依赖管理系统,从 Go 1.11 引入,Go 1.13+ 成为标准。掌握 Modules 是管理 Go 项目依赖的基础。
初始化模块
📝 创建模块
# 初始化新模块
go mod init github.com/user/project
# 生成的 go.mod:
module github.com/user/project
go 1.26
# 添加依赖
go get github.com/gin-gonic/gin
# 整理依赖
go mod tidy
# 查看依赖
go list -m all
# 更新依赖
go get -u github.com/gin-gonic/gin
# 降级依赖
go get github.com/gin-gonic/gin@v1.9.0
# 清理未使用依赖
go mod tidy
go.mod 文件
📖 go.mod 格式
module github.com/user/myapp
go 1.26
require (
github.com/gin-gonic/gin v1.9.1
github.com/go-redis/redis/v8 v8.11.5
)
require (
github.com/gin-contrib/sse v0.1.0 // indirect
github.com/go-playground/validator/v10 v10.14.0 // indirect
)
replace github.com/old/package => github.com/new/package v1.0.0
exclude github.com/bad/package v1.0.0
// 字段说明:
// module: 模块路径
// go: Go 版本
// require: 依赖列表
// indirect: 间接依赖
// replace: 替换依赖
// exclude: 排除版本
常用命令
📝 Modules 命令
# 初始化
go mod init [module-path]
# 下载依赖
go mod download
# 整理依赖 (添加缺失,删除未用)
go mod tidy
# 验证依赖
go mod verify
# 查看依赖
go list -m all # 所有依赖
go list -m -versions [pkg] # 可用版本
go list -m -json [pkg] # 详细信息
# 编辑 go.mod
go mod edit -require=pkg@v1.0.0
go mod edit -droprequire=pkg
go mod edit -replace=old=new
# 缓存管理
go clean -modcache # 清理缓存
go env GOMODCACHE # 缓存位置
# 构建
go build -mod=readonly # 只读模式
go build -mod=vendor # 使用 vendor
版本管理
📖 语义化版本
# 版本格式
v1.2.3 # 主版本。次版本。修订版本
# 预发布版本
v1.2.3-beta.1
v1.2.3-rc.1
# 伪版本 (从 commit 生成)
v0.0.0-20240101123456-abcdef123456
# 版本选择
go get pkg@latest # 最新版
go get pkg@upgrade # 最新兼容版
go get pkg@patch # 最新补丁版
go get pkg@v1.2.3 # 指定版本
go get pkg@abcdef123456 # 指定 commit
最佳实践
✅ Modules 使用建议
- 提交 go.sum: 确保依赖完整性
- 定期 tidy: 保持依赖干净
- 锁定版本: 生产环境锁定依赖版本
- 检查更新: 定期检查安全更新
- 使用 proxy: 配置 GOPROXY 加速下载
📖 配置代理
# 设置 GOPROXY
go env -w GOPROXY=https://goproxy.cn,direct
# 常用代理:
# https://goproxy.io (全球)
# https://goproxy.cn (中国)
# https://mirrors.aliyun.com/goproxy/ (阿里云)