go本地启动慢八成是环境变量未生效,需确认~/.zshrc是否正确source、vs code是否启用login shell、windows是否永久设置go_proxy;推荐设为https://goproxy.cn,direct并用go env -w验证。

Go本地启动慢,八成是环境变量没生效
不是Go安装慢,而是shell没读到你写的~/.zshrc或~/.bash_profile。Mac默认用zsh,但很多人改了~/.bashrc就以为万事大吉——结果go version能跑,go mod download却卡住,因为代理没加载。
- 执行
echo $GO_PROXY,如果为空,说明环境变量根本没进当前shell - 检查你改的是哪个文件:
ls -a ~ | grep "zsh\|bash",然后用source ~/.zshrc重载 - VS Code终端可能不继承登录shell环境,重启VS Code或在设置里勾选“Run in login shell”
- Windows用户别用PowerShell临时
$env:GO_PROXY,得进“系统属性→环境变量”里永久写入
GO_PROXY配错导致模块拉取失败或超时
GO_PROXY不是可有可无的选项,国内不设它,go mod tidy大概率卡在golang.org/x/...上,报错像module golang.org/x/net@latest: Get "https://proxy.golang.org/golang.org/x/net/@v/list": dial tcp 216.239.37.1:443: i/o timeout。
- 推荐值:
https://goproxy.cn,direct(七牛维护,支持私有模块回源) - 多个代理用逗号分隔,
direct必须放最后,否则公司内网域名不会直连 - 验证是否生效:
go env -w GOPROXY=https://goproxy.cn,再go mod download github.com/spf13/cobra,秒完成才算成功 - 别用
https://goproxy.io——它已停服,很多教程还在抄旧配置
GOROOT和GOPATH不是必须手动设,但混淆会引发诡异问题
Go 1.16+默认启用Modules,GOPATH不再是项目根目录,但它仍影响go install生成的二进制存放位置和gopls缓存路径。乱设反而坏事。
-
GOROOT通常不用动:官方pkg安装会自动设好,go env GOROOT指向/usr/local/go就对了 -
GOPATH建议保留默认(~/go),删掉或指向项目目录会导致gopls索引异常、go run找不到依赖 - 项目千万别放
$GOPATH/src下再go build——这会让Go降级到GOPATH模式,绕过go.mod - 清理缓存用
go clean -modcache,别手删$GOPATH/pkg/mod,容易破坏模块校验
IDE启动慢或跳转失效,根源常在工作区配置
VS Code装了Go插件却无法跳转函数、gopls反复崩溃,大概率不是插件问题,而是go.mod缺失、replace指向错误路径,或打开了错误的workspace folder。
- 确保项目根目录有
go.mod,且go mod graph | head -n 5能正常输出依赖树 - VS Code里按
Cmd+Shift+P→ “Go: Restart Language Server”,比重启编辑器更有效 - GoLand需在
Settings → Go → GOROOT点“Reload”,否则不读新GO_PROXY - 避免把整个
~/go设为workspace,只打开具体项目目录,否则gopls会扫描所有src包,内存爆表
go run后,shell没加载代理、IDE没识别模块、或者误把项目塞进GOPATH/src触发了兼容模式——这些细节不盯死,调半天pprof也没用。golang免费学习笔记(深入):立即使用
在学习笔记中,你将探索golang的核心概念和高级技巧!











