Go Module 是 Go 1.11 引入的依赖管理系统,自 Go 1.16 起成为默认模式。它解决了 GOPATH 时代的依赖地狱问题,为 Go 项目带来了可复现的构建。

go.mod 文件详解

module github.com/example/myapp

go 1.21

require (
    github.com/gin-gonic/gin v1.9.1
    github.com/go-redis/redis/v8 v8.11.5
)

require github.com/google/uuid v1.4.0 // indirect

go.mod 记录模块路径、Go 版本和直接依赖。go.sum 记录每个依赖的哈希值,保证构建的可复现性。

语义版本与最小版本选择

Go 使用最小版本选择算法:在依赖图中选择所有 require 的最低兼容版本,而不是最新版本。这保证了构建的稳定性和可复现性。

常用命令

私有模块配置

通过 GOPRIVATE、GONOSUMDB、GONOSUMCHECK 等环境变量,可以配置私有模块、跳过 checksum 检查等。

依赖管理看似简单,实则是一个项目可维护性的基础保障。