Go 包管理与模块
go mod init/tidy/get、导入路径、版本管理 · 难度:进阶 · +20XP
Go Modules — 依赖管理
Go 1.11+ 使用 Go Modules 管理项目依赖。每个项目根目录有 go.mod 文件记录依赖。
初始化项目
go mod init github.com/username/project # 创建 go.mod
go mod tidy # 自动添加缺失依赖,删除无用依赖
go get github.com/gin-gonic/gin # 安装包
go get github.com/gin-gonic/gin@v1.9.0 # 指定版本
go mod vendor # 将依赖复制到 vendor/ 目录
go.mod 文件结构
module github.com/username/myapp
go 1.21
require (
github.com/gin-gonic/gin v1.9.0
github.com/go-sql-driver/mysql v1.7.0
)
require github.com/google/uuid v1.3.0 // indirect(间接依赖)
版本规则
| 格式 | 含义 |
|---|---|
v1.2.3 | 精确版本 |
^1.2.3 | 兼容版本(>=1.2.3 且 <2.0.0) |
~1.2.3 | 补丁版本(>=1.2.3 且 <1.3.0) |
latest | 最新版本 |
导入路径规则
import "fmt" // 标准库
import "github.com/gin-gonic/gin" // 第三方包
import "myapp/internal/config" // 项目内包(module path + 相对路径)
动手试试
- 理解 go.mod 中 require 和 indirect 的区别
- go.sum 记录的是依赖的校验和,用于安全验证
- vendor 目录是可选的,主要用于离线构建和 CI