goland 中的 goroot 和 gopath 是 ide 级配置,不影响系统环境变量;修改仅作用于当前项目或 ide 启动的 go 命令,需在 settings/preferences → go 中单独设置,且 goproxy、go111module 等须用 go env -w 命令配置。

GoLand 里改 GOROOT 和 GOPATH 不影响系统全局变量
GoLand 的 GOROOT 和 GOPATH 是项目/IDE 级配置,和 Windows/macOS 系统环境变量互不干扰。改这里只影响当前项目或 IDE 启动的 go 命令行为,不会覆盖你终端里 go env 显示的值。
实操建议:
- 打开 File → Settings(Windows/Linux) 或 GoLand → Preferences(macOS)
- 左侧选 Go → GOROOT,点击右侧
…按钮选择你本地的 Go 安装目录(如D:\goSDK\go1.23.1) - 同页面下方找 GOPATH 字段,填入你希望存放
src/pkg/bin的路径(如D:\GoProjects),不要和GOROOT混用同一目录 - 改完点 OK,重启项目或重新打开终端窗口生效
GoLand 中设置 GOPROXY、GO111MODULE 等模块变量要走 go env -w
GoLand 自身没有图形界面让你直接配 GOPROXY 或 GO111MODULE,这些必须通过命令行用 go env -w 写入用户级配置。IDE 启动时会自动读取这些值。
常见错误现象:在 Goland Terminal 里执行 go mod tidy 报错 proxy.golang.org: i/o timeout,说明代理没生效。
实操建议:
- 在 Goland 自带 Terminal(或系统终端)中运行:
go env -w GOPROXY=https://goproxy.cn,direct - 再运行:
go env -w GO111MODULE=on - 可选关闭校验加速拉包:
go env -w GOSUMDB=off - 验证是否写入成功:
go env GOPROXY应输出https://goproxy.cn,direct
项目级环境变量(如 HTTP_PROXY)要在 Run Configuration 里单独加
有些私有仓库或内网服务需要额外的网络代理(比如 HTTP_PROXY),这类变量不会被 go env -w 管理,也不进系统环境变量,必须在 Goland 的运行配置中显式声明。
GoLand 2026.1.1 是 2026.1 发布后的首个维护修正版本,适合已经开始体验 2026.1 新功能并希望同步补丁的开发者。它更适合用于入门项目、现有项目迁移测试和 IDE 行为验证。
使用场景:公司内部 Nexus 代理、私有 GitLab、自建 goproxy。
实操建议:
- 点击右上角运行配置下拉箭头 → Edit Configurations…
- 左侧选中你的
Go Build或Go Test配置 - 展开 Environment variables 区域,点右侧
…按钮 - 添加键值对,例如:
键:HTTP_PROXY,值:http://127.0.0.1:8888
键:HTTPS_PROXY,值:http://127.0.0.1:8888 - 勾选 Include parent environment variables,确保继承系统和
go env的基础变量
修改后不生效?重点检查这三处缓存
GoLand 的环境变量加载有层级和缓存机制,改了不一定立刻起效,尤其跨版本升级后容易残留旧配置。
容易踩的坑:
-
GOROOT被设成空或非法路径时,Goland 可能静默 fallback 到系统 PATH 里的第一个go,但go env GOROOT显示的仍是系统值,造成误判 - 修改
go env -w后没关掉 Goland Terminal 标签页,旧 shell 进程仍用着老环境,需新开 Terminal 才读新值 - 多项目共用一个 GOPATH 时,不同项目可能依赖不同 Go 版本,但 Goland 默认复用全局 GOROOT 设置,此时应为每个项目单独指定 GOROOT(在项目 Settings 里)
最稳妥的做法是:每次改完,先关掉所有 Goland Terminal,再执行 go env 确认输出,最后重启 Goland —— 尤其当你发现 go run 和 IDE Run 按钮行为不一致时。










