结论是goproxy未生效或配置错误——90%下载慢问题源于此;需确认go env goproxy输出为https://goproxy.cn,direct,缺direct会导致私有模块fallback失败,且vs code、shell配置需手动source或重启生效。

直接结论:不是网络差,而是 GOPROXY 没生效或配置错误 —— 90% 的“下载慢”问题都卡在这一步。
go mod download 卡在 resolving… 或超时失败
现象是执行 go mod download、go mod tidy 或首次 go run 时卡住几十秒甚至数分钟,终端停在类似 resolving github.com/sirupsen/logrus v1.15.0... 这一行不动。这不是 Go 安装慢,而是模块代理没走通。
- 先确认 GOPROXY 是否真正生效:
go env GOPROXY输出必须是https://goproxy.cn,direct(注意逗号后有direct);如果显示https://proxy.golang.org,direct或空值,说明没配成功 - 不要只写
go env -w GOPROXY=https://goproxy.cn—— 缺少,direct会导致私有模块或本地路径 fallback 失败,反而更卡 - Mac 上用 zsh 的用户,改完
~/.zshrc后必须执行source ~/.zshrc,否则新开终端仍读不到新变量 - VSCode 内置终端有时会缓存旧环境,重启 VSCode 或手动在终端里运行
source ~/.zshrc再试
go get github.com/xxx 报错:module github.com/xxx: reading https://proxy.golang.org/...: 403 Forbidden
这是典型代理未切换成功的表现 —— 命令仍在走官方 proxy.golang.org,而该域名在国内已被限制访问。
Colly 是一个用于 Go 语言的快速开源爬取和爬虫框架。它适用于从简单的页面提取到异步爬虫处理大量页面集合,支持请求回调和结构化解析。
- 执行
go env -w GOPROXY=https://goproxy.cn,direct(不是go env GOPROXY=...,后者只是查询) - 验证是否写入持久化配置:
go env | grep GOPROXY应输出带-w设置过的值,而非仅显示默认值 - 若仍报 403,检查是否被 shell 别名覆盖:运行
type go,确认不是某个 wrapper 脚本在拦截命令 - 临时绕过测试:直接加环境变量前缀运行,比如
GOPROXY=https://goproxy.cn,direct go get github.com/gorilla/mux,能通就说明配置本身没问题,只是没加载进当前会话
go mod download 下载部分模块快、部分慢(比如 golang.org/x/... 特别慢)
golang.org/x/ 下的包(如 net/http 扩展、sync/errgroup)是 Go 官方维护但独立发布的模块,国内直连极不稳定,必须依赖代理正确转发。
-
goproxy.cn对golang.org/x/支持完整,但需确保没有被其他配置覆盖 —— 检查go env GOSUMDB,应为sum.golang.google.cn(不是sum.golang.org),否则校验阶段会卡住 - 执行
go env -w GOSUMDB=sum.golang.google.cn补上这步 - 如果项目里有
replace或exclude指令,某些模块可能被强制绕过代理,可临时注释go.mod中相关行再试 - 极端情况可手动触发缓存:
GOPROXY=https://goproxy.cn,direct go mod download golang.org/x/net
真正容易被忽略的是:GOPROXY 配置只影响 go mod 和 go get,它不解决 go install 二进制工具(如 gopls)的下载慢——那得靠 GOBIN + 手动下载或换源安装。模块代理一旦生效,后续所有依赖操作基本秒级响应,卡顿几乎都出在环境变量没落进实际执行上下文里。
golang免费学习笔记(深入):立即使用
在学习笔记中,你将探索golang的核心概念和高级技巧!










