Rust下载依赖慢或卡住主要因默认国外镜像,可通过开启终端代理或修改.cargo/config.toml使用国内镜像(如USTC)解决,推荐覆盖默认源方式。

直接设 GOPROXY=https://goproxy.cn,direct 就能解决 90% 的卡顿,漏掉 ,direct 会导致私有模块拉取失败,这是最常踩的坑。
go mod download 卡在 proxy.golang.org 或 dial tcp timeout
这不是你网络差,是 Go 默认直连 proxy.golang.org,该域名在国内多数情况 DNS 解析失败或 TLS 握手超时。执行 nslookup proxy.golang.org 如果无响应,说明 DNS 层就断了,换源前先修 DNS。
- 临时验证:运行
go mod download -x,看最后一条 curl 命令是否发向proxy.golang.org;如果是,代理根本没生效 - 正确设置:用
go env -w GOPROXY=https://goproxy.cn,direct(Windows PowerShell 需加引号) - 别只写
https://goproxy.cn—— 缺少,direct会让公司内网 Git 地址(如gitlab.example.com)也被扔给代理,返回 401/404 - 多镜像备选:可写成
https://goproxy.cn,https://mirrors.aliyun.com/goproxy/,direct,失败自动 fallback
go install gopls 或 go get 工具时超时
go get 在 Go 1.16+ 已被弃用,它会绕过 GOPROXY 直连 golang.org/x,而这个域名在国内基本无法解析。
- 改用
GO111MODULE=on go install golang.org/x/tools/gopls@latest(go install尊重GOPROXY) - 若仍失败,临时换路径:
go install github.com/golang/tools/gopls@latest,但需同步改代码里所有import "golang.org/x/tools/" - 企业内网建议配
GONOPROXY:例如go env -w GONOPROXY="gitlab.example.com,192.168.0.0/16"
换源后 checksum mismatch 或校验失败
这不是网速问题,是本地缓存和镜像同步延迟导致的哈希不一致,常见于刚发布的新版本。
使用 uber-go/dig 在 Golang 中实现依赖注入——基于反射容器,提供 Provide/Invoke、dig.In/dig.Out 参数与结果对象,支持命名依赖等
- 先清缓存:
go clean -modcache - 确认校验服务可用:
go env -w GOSUMDB=sum.golang.google.cn(比默认的sum.golang.org更稳) - 调试时可临时关校验:
go env -w GOSUMDB=off,但上线前必须关掉 - 别用已停服的
goproxy.io,它会返回 502,导致校验链断裂
VS Code / Goland 里还是卡住?环境变量没继承进去
IDE 启动方式常导致 shell 中设好的 GOPROXY 不生效,尤其 GUI 点击启动的编辑器。
- VS Code:在
settings.json中加"go.toolsEnvVars": {"GOPROXY": "https://goproxy.cn,direct"} - Goland:进
Settings → Go → Go Modules,填入https://goproxy.cn(注意这里不用写,direct,Goland 会自动处理) - 检查项目根目录是否有
go.env文件,它会覆盖全局配置,删掉或修正它 - CI 场景(如 GitHub Actions)需在
env:下显式声明,不能只靠本地go env -w
真正容易被忽略的是:即使 GOPROXY 设对了,GO111MODULE 是 auto 且你在 $GOPATH/src 下执行命令,Go 会强制退回到 GOPATH 模式,完全无视模块和代理——所以务必确认 go env GO111MODULE 输出是 on,且当前路径不在 $GOPATH/src 内。
golang免费学习笔记(深入):立即使用
在学习笔记中,你将探索golang的核心概念和高级技巧!










