需手动在GoLand中配置GOROOT指向Go安装根目录(如/usr/local/go或C:\Go),结尾不可带斜杠,且必须重启IDE;同时设GO111MODULE=on、GOPROXY=https://goproxy.cn,direct,并清空GOPATH。

GoLand 不继承系统环境变量,你终端里 go version 能跑,不代表它能识别 GOROOT 或 GO111MODULE——必须在 IDE 内显式配置,否则 SDK 报错、模块失效、调试器起不来全是常态。
GOROOT 必须手动指定,且路径不能带尾部斜杠
GoLand 的 Settings → Go → GOROOT 页面不是摆设。它不读 %GOROOT%,也不自动探测 PATH 里的 go 命令位置。常见错误是:你在系统里设了 GOROOT=C:\Go\(末尾有反斜杠),或填成了 C:\Go\bin(指向了可执行文件目录而非根目录)。
- 先在终端运行
go env GOROOT,拿到真实值(如C:\Go或/usr/local/go) - 打开 GoLand → Settings → Go → GOROOT → 点 + → 粘贴该路径,**确保结尾没有
/或\** - 确认该路径下存在
src、pkg、bin三个子目录(bin/go必须可执行) - 点 Apply 后,**必须重启 GoLand**,Reload Project 无效
GO111MODULE=on 是硬性要求,不能依赖“auto”
即使系统里已用 go env -w GO111MODULE=on 设过,GoLand 仍可能 fallback 到 GOPATH 模式,尤其当你项目已有 go.mod 却报 not in a module 时。
- 进 Settings → Go → Environment Variables,新增一行:
GO111MODULE=on - 不要写
auto,也不要留空;输出必须是字面量on - 验证方式:新建一个
main.go,写fmt.Println("ok"),右上角绿色三角亮起且无波浪线才算通过 - 若仍失败,先在终端执行
go clean -modcache清缓存
GOPROXY 必须含 ,direct 后缀,否则私有包会直接失败
只配 https://goproxy.cn 看似能下载公开包,但一旦遇到公司内网模块、未同步镜像的包,或 replace 指向本地路径,就会卡住或报 cannot find module。
GoLand 2026.1.1 是 2026.1 发布后的首个维护修正版本,适合已经开始体验 2026.1 新功能并希望同步补丁的开发者。它更适合用于入门项目、现有项目迁移测试和 IDE 行为验证。
- Settings → Go → Environment Variables 中添加:
GOPROXY=https://goproxy.cn,direct - 若公司有内网代理,顺序不能错:
GOPROXY=https://intra.example.com,goproxy.cn,direct - 配套建议加一行:
GOSUMDB=off(尤其在离线/内网环境,避免 checksum 校验卡死) - 改完后,在终端运行
go env GOPROXY和go env GOSUMDB双重确认
别碰 GOPATH,除非你真在维护 GOPATH 模式老项目
Go 1.16+ 默认启用模块,go build 和 go run 完全不看 GOPATH。你在 GoLand 里手动填 GOPATH,反而容易触发路径误判,比如把模块项目当成旧 GOPATH 项目处理。
- Settings → Go → GOPATH 页面保持空白,或仅勾选
Use GOPATH that’s defined in system environment - 如果你没在系统里设
GOPATH,GoLand 会用默认值(如$HOME/go),这刚好用于存放go install的二进制和模块缓存,够用 - 真正需要的是确保
%GOROOT%\bin和%GOPATH%\bin(如果用了)都进了系统 PATH,否则gopls、dlv这类工具在 GoLand 终端里会提示command not found
最常被忽略的点是:改完所有设置后,不关掉所有终端窗口重开,PATH 就不会刷新;不重启 GoLand,GOROOT 就不会重载;不验证 go env 输出,就永远不知道 IDE 里写的那行环境变量到底有没有生效。










