GO111MODULE必须设为on,否则go mod命令失效、依赖无法管理;GOPROXY需设为https://goproxy.cn,direct以避免超时;GOPATH和GOROOT路径须正确且不冲突,%GOPATH%\bin与%GOROOT%\bin均需加入PATH。

go 环境在个人电脑上(尤其是 Windows)能跑起来,关键不是装没装,而是 GOROOT、GOPATH 和 PATH 三者是否对得上、有没有冲突。新版安装包虽会自动加 %GOROOT%\bin 到 PATH,但 GOPATH 和模块代理仍需手动干预,否则 go get 或 go install 很容易卡住或报错。
go version 能运行 ≠ 环境就 ready
很多人执行 go version 成功后就以为万事大吉,结果一跑 go run main.go 没问题,但 go install 出来的二进制找不到,或者 go get github.com/golang/freetype 直接超时失败——这说明 GOPATH\bin 没进 PATH,或 GOPROXY 还是默认的 https://proxy.golang.org。
-
go env GOPATH输出路径必须存在,且该路径下建议有bin、pkg、src三个子目录(即使只用模块,go install仍依赖GOPATH\bin) -
go env GOROOT必须指向真实安装目录(如C:\Go),不能和GOPATH混用同一路径 -
echo %PATH%(CMD)或$env:Path(PowerShell)里必须同时包含%GOROOT%\bin和%GOPATH%\bin,缺一不可
Windows 下 GOPROXY 和 GOSUMDB 必须改
国内用户不改这两项,go mod download 基本等于“等半天然后失败”。默认 GOPROXY=https://proxy.golang.org 在大陆访问极不稳定;GOSUMDB=sum.golang.org 同样受阻,导致校验失败或跳过校验(GOINSECURE 不推荐)。
- 推荐命令(PowerShell 管理员权限运行):
go env -w GOPROXY=https://goproxy.cn,directgo env -w GOSUMDB=off(或sum.golang.org+GOPROXY配合,但off更省事) - 验证是否生效:
go env GOPROXY GOSUMDB,输出应为设置后的值 - 注意:
go env -w写入的是用户级配置,无需重启终端,但旧终端可能缓存旧值,新开一个再测
VS Code 中 go tools 安装失败的典型原因
VS Code 装完 Go 插件后点 “Go: Install/Update Tools”,经常卡在 gopls 或 dlv,本质还是网络和路径问题。
- 确保
go env GOPROXY已设为国内镜像,否则插件内部调用的go install会走默认代理 - 不要用管理员权限运行 VS Code —— 管理员模式下
go env可能读取系统变量而非当前用户变量,导致路径错乱 - 如果提示 “command not found” 类错误,检查
%GOPATH%\bin是否真在PATH里:在 VS Code 终端里执行where gopls,没输出就说明没生效 - 可手动安装(终端中):
go install golang.org/x/tools/gopls@latest,前提是GOPROXY和GOSUMDB已正确设置
Go Modules 开启后 GOPATH/src 不再是 import 搜索路径
这是新手最容易误解的一点:启用 GO111MODULE=on(Go 1.16+ 默认开启)后,import 查找完全依赖 go.mod 和模块路径,不再扫描 GOPATH/src。所以你把代码放 %GOPATH%\src\hello\main.go 里,go run 仍可能报 no required module provides package。
立即学习“go语言免费学习笔记(深入)”;
- 正确做法:在任意目录新建项目文件夹 →
go mod init example.com/hello→ 再写main.go -
GOPATH此时只影响go install输出位置(即%GOPATH%\bin),不影响编译和依赖解析 - 若仍想用传统
GOPATH方式(不推荐),可临时关模块:go env -w GO111MODULE=off,但会失去依赖版本控制能力
go env 输出可能不一致——务必在你实际运行命令的那个终端里验证。


















