1.13 包管理
Go Modules 详解
bash
# 初始化模块
go mod init <module-name>
# 整理依赖
go mod tidy
# 下载依赖
go mod download
# 查看依赖
go list -m all
# 查看为什么需要某个依赖
go mod why github.com/gin-gonic/gin
# 升级依赖
go get github.com/gin-gonic/gin@latest
go get github.com/gin-gonic/gin@v1.9.0
# 降级依赖
go get github.com/gin-gonic/gin@v1.8.0
# 移除依赖
go mod edit -droprequire=github.com/some/package
# 查看依赖图
go mod graph
# 验证依赖
go mod verify
# 清理缓存
go clean -modcachego.mod 详解
go
// go.mod 文件结构
module example.com/myapp
go 1.25
require (
// 直接依赖
github.com/gin-gonic/gin v1.9.1
// 间接依赖
golang.org/x/sys v0.8.0 // indirect
)
// 替换依赖
replace github.com/old/pkg => github.com/new/pkg v1.0.0
// 排除特定版本
exclude github.com/problematic/pkg v1.0.0
// 撤回已发布版本
retract v1.0.0go.sum 详解
// go.sum 包含所有依赖的哈希值
// 用于验证下载依赖的完整性
// 格式:
github.com/gin-gonic/gin v1.9.1 h1:xxx...
github.com/gin-gonic/gin v1.9.1/go.mod h1:yyy...
// 第一行是模块内容的哈希
// 第二行是 go.mod 文件的哈希
// go.sum 应该提交到版本控制依赖版本管理
bash
# 语义化版本
# v1.2.3 // 主版本。次版本。修订版本
# 获取特定版本
go get github.com/pkg@v1.0.0
go get github.com/pkg@latest # 最新版
go get github.com/pkg@main # main 分支
# 主版本 v2+ 需要修改导入路径
go get github.com/pkg/v2@v2.0.0
# 导入:import "github.com/pkg/v2"私有仓库配置
bash
# GOPRIVATE 配置
export GOPRIVATE=github.com/mycompany/*
# 永久配置
go env -w GOPRIVATE=github.com/mycompany/*
# Git 配置 SSH
git config --global url."git@github.com:".insteadOf "https://github.com/"
# SSH 密钥
ssh-add ~/.ssh/id_rsa发布自己的包
bash
# 发布步骤:
# 1. 创建 GitHub 仓库
# 2. 初始化 go.mod
go mod init github.com/username/mypackage
# 3. 编写代码和文档
# - 添加 README.md
# - 添加 LICENSE
# - 编写示例代码
# 4. 打标签发布
git tag v1.0.0
git push origin v1.0.0
# 5. 其他人可以使用
# go get github.com/username/mypackage@v1.0.0