Go Modules 下载的依赖默认被缓存到本地的 模块缓存目录,在 macOS 上通常是:
~/go/pkg/mod
你可以通过以下命令查看当前的模块缓存路径:
go env GOMODCACHE
一、依赖下载目录详解
以下载 github.com/gin-gonic/gin v1.9.0
为例,它的路径会像这样:
~/go/pkg/mod/github.com/gin-gonic/gin@v1.9.0/
- 下载后,这些模块不会放到项目目录里,而是全局缓存。
- 如果你执行了
go mod vendor
,Go 会把依赖复制一份到你的项目的vendor/
目录中(可选)。
二、版本问题说明
Go Modules 有完整的版本控制机制,你可以在 go.mod
中指定每个依赖的版本,比如:
require github.com/gin-gonic/gin v1.9.0
特性:
固定版本:每个依赖都锁定在具体版本,不受本地其他项目影响。
版本升级:用
go get
显式升级,例如:go get github.com/gin-gonic/gin@latest
降级或指定版本:
go get github.com/gin-gonic/gin@v1.7.7
查看依赖版本树:
go list -m all
查看是否有更新:
go list -m -u all
三、版本冲突如何解决?
Go Modules 会自动处理最小版本选择算法(Minimal Version Selection, MVS):
- 如果多个依赖模块引用同一个包但版本不同,Go 会选择所有路径中需要的最高版本。
- 不像 npm 或 pip,Go 不会在每个依赖下生成不同版本的副本。