Go 1.16+默认启用GO111MODULE=on,go build/run自动下载go.mod中声明的依赖;需先go mod init初始化模块,确保模块路径规范、网络可达及GOPROXY配置正确(如goproxy.cn)。

Go 1.16 及之后版本默认启用 GO111MODULE=on,go build 和 go run 会自动下载缺失的模块依赖(只要 go.mod 中已声明),无需手动执行 go get。关键在于项目初始化正确、模块路径清晰、网络环境可达。
若项目根目录下没有 go.mod 文件,go build 不会触发模块下载(而是回退到 GOPATH 模式)。需先运行:
go mod init <module-name></module-name>(例如 go mod init example.com/myapp)——生成 go.mod
go build、go run main.go)都会基于该模块解析和下载依赖Go 不会“猜测”你要用什么第三方包。只有当你在代码中 import 并实际使用某个包(且该包不在标准库中),go build 或 go run 才会在首次构建时:
"github.com/gin-gonic/gin")$GOPATH/pkg/mod 是否已缓存对应版本go.mod 和 go.sum
注意:仅 import 未使用的包,或使用 _import(如 import _ "net/http/pprof")也会触发下载。
立即学习“go语言免费学习笔记(深入)”;
国内用户常因无法直连 proxy.golang.org 导致下载失败。可通过以下方式解决:
go env -w GOPROXY=https://goproxy.cn,direct(推荐)GOPROXY=https://goproxy.cn go run main.go
go env -w GOPROXY=direct(需确保能直连 GitHub 等源)go env GOPROXY 输出非空且有效当自动下载未发生或失败时,可快速排查:
go list -m all 查看当前解析出的所有模块(含间接依赖)-v 参数观察过程:go build -v 会打印正在编译/下载的包go clean -modcache 后重试(慎用,会清空全部本地模块)go.mod 是否被意外修改(如误删某行 require)不复杂但容易忽略。
以上就是如何使用Golang实现模块自动下载_go build和go run触发依赖获取的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号