go mod download卡住主因是代理不可达,需设GOPROXY为国内镜像如https://mirrors.tuna.tsinghua.edu.cn/goproxy/,direct并同步关闭GOSUMDB=off或切换校验源,离线环境须提前vendor,ARM机器需匹配arm64二进制包。

go version能跑但go mod download卡住,说明代理没配对
受保护开发机通常有网络白名单或完全断网,go mod download失败不是Go没装好,而是模块代理不可达。默认的proxy.golang.org在内网基本不可用,直接报connection refused或超时。
- 先确认当前代理设置:
go env GOPROXY,90%的情况是显示https://proxy.golang.org,direct - 临时切直连(仅限已预置
vendor或私有Git):go env -w GOPROXY=direct - 更稳妥的做法:设为国内可信镜像+fallback,例如清华源:
go env -w GOPROXY=https://mirrors.tuna.tsinghua.edu.cn/goproxy/,direct - 如果开发机完全离线,必须提前在能联网机器上用
go mod vendor生成vendor/目录,再同步过去
执行go build时报“exec format error”,检查CPU架构是否匹配
受保护开发机可能是ARM服务器(如鲲鹏、飞腾),但下载了x86_64的Go包,解压后go命令根本无法执行,错误信息是bash: /usr/local/go/bin/go: cannot execute binary file: Exec format error。
- 用
uname -m确认真实架构:输出aarch64或arm64→ 下载go1.xx.x.linux-arm64.tar.gz;输出x86_64→ 用amd64包 - 别信“Linux通用”这种说法,Go官方二进制严格区分
amd64和arm64,混用必挂 - 解压后运行
file /usr/local/go/bin/go验证:应显示ELF 64-bit LSB executable, x86-64或对应ARM格式
GOPATH和GOROOT写错位置,导致go install找不到工具
受保护环境常要求统一安装路径,但go install出来的二进制(比如gopls、goimports)会默认写入$GOPATH/bin。如果GOPATH没设或设错,命令就找不到。
Colly 是一个用于 Go 语言的快速开源爬取和爬虫框架。它适用于从简单的页面提取到异步爬虫处理大量页面集合,支持请求回调和结构化解析。
-
GOROOT应指向Go安装根目录,例如/usr/local/go;不设也能工作,但某些CI/IDE插件会读取失败 -
GOPATH建议显式设为$HOME/go,并在PATH中包含$GOPATH/bin,否则go install golang.org/x/tools/gopls@latest装完也用不了 - 避免把项目放
$GOPATH/src下——这是旧模式,新项目直接go mod init example.com/foo即可,与GOPATH无关 - 配置生效范围很重要:写入
/etc/profile.d/golang.sh比只改~/.bashrc更可靠,尤其对非交互式shell(如Jenkins job)
go build成功但运行时报checksum mismatch,GOSUMDB没关干净
即使代理设对了,go build仍可能失败,报verifying github.com/xxx@v1.2.3: checksum mismatch。这不是网络问题,而是Go试图连接sum.golang.org校验模块哈希值,而该域名在受保护网络里同样不可达。
立即学习“go语言免费学习笔记(深入)”;
- 测试环境可直接禁用:
go env -w GOSUMDB=off - 生产环境不能关,需部署内网校验服务,或用
go env -w GOSUMDB=sum.golang.org+https://sum.golang.google.cn切换备用源 - 注意:
GOSUMDB=off只影响模块校验,不影响go get或go mod download本身 - 验证是否生效:
go env GOSUMDB输出应为off,而非空字符串
GOSUMDB和GOPROXY的组合行为——代理换掉但校验没关,或者校验关了但代理还是direct,两者必须协同调整才真正打通。

















