Go 1.11起默认启用Go Modules,go get用于添加、升级、降级模块依赖并更新go.mod/go.sum,不安装到全局;需确保module模式启用,配合go mod tidy、verify等保障依赖一致性。
Go 语言从 1.11 版本起默认启用 Go Modules,不再依赖 $GOPATH,go get 的行为也发生了本质变化:它现在主要用于下载、升级模块,而非“安装”到全局环境。理解这一点是正确管理依赖的前提。
go get 不是“安装工具”,而是修改 go.mod 文件并同步 go.sum 的命令。运行后,依赖会下载到本地缓存($GOCACHE),项目构建时自动使用。
go get github.com/gin-gonic/gin → 自动写入 go.mod 并下载go get github.com/sirupsen/logrus@latest
go get github.com/spf13/cobra@v1.7.0
go get github.com/gorilla/mux@e28a56
执行 go get 前,请确认当前目录已初始化为 Go Module(含 go.mod 文件):
go mod init myapp
go.mod:同样用 go mod init 初始化(建议指定模块路径,如 go mod init example.com/myapp)
是否启用 module:运行 go env GO111MODULE,输出应为 on(Go 1.16+ 默认开启)仅靠 go get 无法批量更新全部依赖,需配合其他命令:
go get -u github.com/pkg/errors(-u 表示升级到允许的最新次要/补丁版本)go get -u=patch github.com/go-sql-driver/mysql 或 go get -u=minor
go list -u -m all 列出所有可更新的模块go list -u -m -versions github.com/golang/freetype
依赖变更后,建议执行以下操作保障项目可复现构建:
go.mod:go mod tidy(推荐每次修改依赖后都运行)go mod verify
go mod graph | grep "gin"(配合管道筛选)go clean -modcache(谨慎使用,会清空全部本地模块缓存)Go 的依赖管理强调显式、可重现和最小化。只要始终以 go.mod 为中心,用 go get 精准控制版本,再配合 tidy 和 verify,就能稳定高效地维护项目依赖。