Go模块下载慢的根本原因是proxy.golang.org国内访问不稳定,应设置GOPROXY为https://goproxy.cn,direct等支持module的代理地址并保留,direct作为回源 fallback,否则私有模块将无法下载。

Go 模块下载慢,本质是 proxy.golang.org 在国内访问不稳定。直接改环境变量或 go env -w 就能生效,不需要改源码或重装 Go。
设置 GOPROXY 环境变量(推荐)
这是最通用、最可靠的方式,适用于所有 Go 版本(1.13+),且对 IDE、CI、命令行都生效。
-
GOPROXY必须设为支持 Go module 的代理地址,例如:https://goproxy.cn,direct或https://mirrors.aliyun.com/goproxy/,direct -
direct是 fallback 机制:当代理无法命中模块时,才回源到原始仓库(如 GitHub),避免私有模块下载失败 - 不要只写一个代理地址(如
https://goproxy.cn),漏掉,direct会导致私有仓库或未被镜像的模块彻底无法下载 - Windows 用户用 PowerShell 执行:
go env -w GOPROXY=https://goproxy.cn,direct
;macOS / Linux 用户同理
验证配置是否生效
执行后立刻生效,无需重启终端或 IDE。用以下命令确认:
go env GOPROXY
输出应为:https://goproxy.cn,direct(或你设置的其他地址)
立即学习“go语言免费学习笔记(深入)”;
- 如果输出是空或
off,说明设置失败,检查是否拼错GOPROXY(注意大小写) - 运行
go list -m -u all或go get github.com/sirupsen/logrus,观察是否秒级完成,而非卡在 “Fetching” - 若仍慢,可能是本地网络 DNS 或 HTTPS 代理干扰,可临时加
-v查看真实请求地址:go get -v github.com/sirupsen/logrus
多个镜像地址可以串联吗?
可以,但不建议随意堆叠。Go 官方只支持用英文逗号分隔的「有序列表」,从左到右依次尝试,直到第一个返回 200 或 404。
- 合法写法:
https://goproxy.cn,https://mirrors.aliyun.com/goproxy/,direct - 错误写法:
https://goproxy.cn;https://mirrors.aliyun.com/goproxy/(分号无效)、https://goproxy.cn https://mirrors.aliyun.com/goproxy/(空格会被当参数) - 实际中,选一个稳定镜像 +
,direct足够。多加镜像反而增加首次失败延迟,且无容灾价值——这些镜像本身可用性差异不大
真正容易被忽略的是 ,direct 这个尾巴。很多教程只贴前半截,结果团队里有人拉私有模块时报 module not found,查半天才发现是代理把所有请求都拦了,连公司内网 Git 也不放行。










