go env -w 配置被忽略是因为 go 的 go env -w 写入 $home/go/env 文件,仅由 go 命令运行时读取,不参与 shell 环境继承,vs code 等工具依赖 shell 环境变量,需在 ~/.zshrc(mac)、powershell 或 ~/.profile(wsl)中显式 export goproxy 才能生效。

go env -w 配置被忽略?检查 shell 初始化文件加载顺序
执行 go env -w GOPROXY=https://goproxy.cn,direct 后 go env GOPROXY 仍显示空或默认值,大概率是 shell 没读到生效后的配置。Go 的 env -w 会写入 $HOME/go/env 文件,但该文件仅在 go 命令启动时由 Go 运行时读取——它不参与 shell 环境变量继承,也不影响 go build 外部调用的工具(比如 VS Code 里点击运行)。
- VS Code 中 Go 工具链(如
gopls、goimports)默认从 shell 环境继承变量,而非读取go env文件 - Mac 用户若用 zsh,需确认
~/.zshrc中已显式设置export GOPROXY=https://goproxy.cn,direct - Windows PowerShell 用户要运行
[Environment]::SetEnvironmentVariable("GOPROXY", "https://goproxy.cn,direct", "User")才能持久化 - WSL 用户常见坑:
source ~/.bashrc后新开终端仍无效,是因为 GUI 应用(如 VS Code)启动时未加载该文件,需改用~/.profile或重启 VS Code
为什么 go mod download 还是慢?proxy + sumdb 必须配齐
只设 GOPROXY 不够。国内用户常漏配 GOSUMDB,导致 go mod download 卡在 checksum 验证环节——Go 会尝试连接 sum.golang.org 校验模块哈希,超时后才 fallback,拖慢整个过程。
Colly 是一个用于 Go 语言的快速开源爬取和爬虫框架。它适用于从简单的页面提取到异步爬虫处理大量页面集合,支持请求回调和结构化解析。
- 正确组合是:
go env -w GOPROXY=https://goproxy.cn,direct+go env -w GOSUMDB=sum.golang.google.cn -
sum.golang.google.cn是 Google 官方提供的中国镜像,不是第三方代理,可安全使用 - 若公司内网禁外网,可设
GOSUMDB=off(仅限可信环境),但会丧失完整性校验 - 验证是否生效:
go env GOPROXY GOSUMDB应两行都输出非空值
VS Code 里 “Install All” 工具失败?优先手动装 gopls
VS Code Go 插件弹出的 “Install All” 常卡在 gopls 编译,尤其在 ARM64 Mac 或 WSL 上。根本原因是插件调用的是系统默认 go,而该 go 可能没配好 proxy 或 GOPATH/bin 不在 PATH 中。
- 先确保终端里
go version和which go正常,且$PATH包含$GOROOT/bin和$GOPATH/bin - 手动安装:
GO111MODULE=on go install golang.org/x/tools/gopls@latest - 安装后检查:
which gopls应输出类似/Users/xxx/go/bin/gopls - VS Code 设置里关掉自动安装提示,在
settings.json显式指定:"go.goplsPath": "/path/to/your/gopls"
多版本共存时 GOPATH 冲突?现代项目其实不需要 GOPATH
Go 1.16+ 默认启用 modules,GOPATH 对构建已无实质影响。强行设置 GOPATH 反而容易引发工具链路径混乱,比如 go install 把二进制写到旧 GOPATH/bin,而新 shell 的 PATH 指向另一处。
- 除非维护极老项目(Go GOPATH 环境变量
-
go install生成的可执行文件默认落进$HOME/go/bin,只需确保该路径在PATH中 - 模块初始化只需
go mod init example.com/foo,任意目录均可,无需进入$GOPATH/src - 真正要关注的是
GOROOT—— 它必须指向你实际安装的 Go 版本目录,多版本切换时靠它隔离
source 没执行到位,后面全盘失效。golang免费学习笔记(深入):立即使用
在学习笔记中,你将探索golang的核心概念和高级技巧!










