Go语言国内代理需设多镜像加direct,如go env -w GOPROXY=https://goproxy.cn,https://mirrors.aliyun.com/goproxy/,direct;checksum mismatch时清缓存go clean -modcache并配GOSUMDB=sum.golang.google.cn;私有模块还需go env -w GOPRIVATE=域名。

Go 语言环境搭建卡在 go get 或 go mod download,90% 是因为默认代理 https://proxy.golang.org 在国内不可用——不是你网络差,是它本身没对国内节点做优化。必须手动换源,且不能只设一个地址。
go env -w GOPROXY 必须带 direct
只写 go env -w GOPROXY=https://goproxy.cn 是错的。这样会导致公司内网 Git 地址(如 gitlab.example.com)也被代理,认证失败、401 或 404。
-
direct表示“对私有模块直连”,它是 fallback 链条的终点,必须保留 - 推荐写法:
go env -w GOPROXY=https://goproxy.cn,https://mirrors.aliyun.com/goproxy/,direct - 多个镜像用英文逗号分隔,失败自动试下一个;
direct写在最后,确保私有模块不走代理 - 验证是否生效:
go env GOPROXY输出应含goproxy.cn和direct
checksum mismatch 不是网速问题,是校验链断了
换源后 go build 或 go mod download 报 checksum mismatch,说明模块内容和官方 sum.golang.org 记录的哈希不一致。常见于镜像同步延迟或本地缓存污染。
- 先清缓存:
go clean -modcache,再重试 - 确认镜像是否透传校验:
goproxy.cn和mirrors.aliyun.com/goproxy/都支持,但goproxy.io已停服,会返回 502 - 临时绕过(仅调试):
go env -w GOSUMDB=off;上线前务必关掉,否则失去依赖完整性保护 - 更稳妥的做法是配
GOSUMDB=sum.golang.google.cn,它在国内可用,比默认sum.golang.org更稳定
Windows/macOS/Linux 换源命令写法差异很小,但路径别写错
所有平台都推荐用 go env -w,而不是改系统环境变量文件——它跨 shell、跨终端生效,且 Go 自己管理。
立即学习“go语言免费学习笔记(深入)”;
- Windows CMD:
go env -w GOPROXY=https://goproxy.cn,direct - PowerShell:
go env -w GOPROXY="https://goproxy.cn,direct"(加引号防空格解析错误) - macOS/Linux:
go env -w GOPROXY=https://goproxy.cn,direct - 不要去改
~/.bashrc或%USERPROFILE%\go\env,容易和go env -w冲突 - 撤销设置统一用:
go env -u GOPROXY
真正容易被忽略的是 GOPRIVATE ——如果你拉的是公司私有模块(比如 git.internal.company.com/repo),光靠 direct 不够,还得显式声明:go env -w GOPRIVATE=git.internal.company.com,否则 Go 仍会尝试走代理校验 sum。


















