Go Modules 下载慢的根本原因是默认直连境外源导致DNS污染、超时及TLS失败;解决方法是设置GOPROXY为国内代理如https://goproxy.cn,direct,并用go env -w写入全局配置。
为什么 Go Modules 下载慢
根本原因不是 Go 本身,而是 go mod download 默认直连 GitHub、Google 等境外源,国内网络环境下 DNS 污染、连接超时、TLS 握手失败频发。常见现象包括:Get "https://proxy.golang.org/...": dial tcp: i/o timeout 或卡在 verifying github.com/[email protected] 不动。
设置 GOPROXY 环境变量(最直接有效)
Go 1.13+ 默认启用代理机制,只需指定稳定、国内可访问的代理地址。优先级从高到低生效,建议用带 fallback 的组合:
-
export GOPROXY=https://goproxy.cn,direct(推荐,清华镜像已停更,goproxy.cn 更活跃) -
export GOPROXY=https://goproxy.io,direct(备选,偶有同步延迟) - 若项目含私有模块,必须保留
direct在末尾,否则无法拉取未公开仓库 - Windows 用户用 PowerShell:
$env:GOPROXY="https://goproxy.cn,direct"
go env -w 写入全局配置(避免每次重设)
比 shell 环境变量更可靠,尤其对 IDE(如 VS Code)或 CI 环境生效: