goland 能运行需满足三项前提:本地 go 命令可用、goroot 指向正确根目录、项目启用 go modules;缺一不可,否则运行按钮灰色。

GoLand 能跑起来,不靠“下一步下一步”,而靠三件事:本地 go 命令可用、GOROOT 指向正确、项目启用 Go Modules。其他配置都是锦上添花,这三项漏掉任何一项,右上角绿色运行按钮就永远灰着。
确认系统已装 Go 且能被终端识别
这是所有后续操作的前提。GoLand 不会帮你装 Go,它只消费你本地的 go 二进制。
- 打开终端(不是 GoLand 自带 Terminal),执行
go version。必须有输出,例如go version go1.24.0 darwin/arm64;如果报 command not found 或无输出,说明go没进PATH,GoLand 也找不到它 - Windows 用户注意:
.msi安装包默认把C:\Go\bin加入系统 PATH,但如果你自定义路径(比如D:\Go),就得手动把D:\Go\bin加进去,加完必须关掉所有终端窗口再重开 - macOS/Linux 用户检查
echo $PATH是否含/usr/local/go/bin(或你实际安装路径下的bin目录);若没有,编辑~/.zshrc或~/.bash_profile,追加export PATH=$PATH:/usr/local/go/bin,然后source一下
手动指定 GOROOT 并重启 GoLand
GoLand 的 “Auto-detect” 功能在 2025+ 版本里基本不可信,尤其在多 Go 版本共存或非标准路径下。它必须看到你明确指向的根目录。
GoLand 2026.1.1 是 2026.1 发布后的首个维护修正版本,适合已经开始体验 2026.1 新功能并希望同步补丁的开发者。它更适合用于入门项目、现有项目迁移测试和 IDE 行为验证。
- 进入
Settings → Go → GOROOT(macOS 是Preferences),点击右侧文件夹图标,选择 Go 安装根目录 —— 注意是/usr/local/go(macOS)、C:\Go(Windows)这类路径,不是里面的bin子目录 - 确认该目录下有
src、pkg、bin三个文件夹;如果点进去只有bin,说明你选错了 - 点
Apply后,必须关闭整个 GoLand 进程(包括后台进程),再重新启动;仅 “Reload project” 或 “Sync” 完全无效 - 验证方式:新建
main.go,写fmt.Println("ok"),看是否无波浪线、右上角绿色三角是否亮起
新建项目时直接启用 Go Modules
别用 “Empty Project”,也别等导入后再折腾模块。从第一行代码起就走现代 Go 工作流。
- 启动 GoLand 后,选
New Project→ 左侧选Go→ 右侧模式务必选Go module,填模块名如example.com/hello(域名不重要,但不能纯数字或含空格) - 项目创建后,立刻检查根目录是否有
go.mod文件;如果没有,说明模块没启用,此时不要手动go mod init,而是删掉项目重来 —— GoLand 2025 对非模块项目的索引和运行支持极弱 - 国内用户必须配代理:进
Settings → Go → Go Modules,勾选Enable Go modules integration,Proxy 填https://goproxy.cn,direct(注意逗号和direct,缺一不可) - 如果项目里已有
go.work文件,删掉它;这个文件会强制启用多模块工作区,干扰单模块项目初始化
运行配置别依赖默认值
点绿色三角跑不起来?大概率是工作目录或入口路径没对齐,而不是代码问题。
- 首次运行前,先点右上角
Add Configuration → Go Build,名称随便填(如main),Run kind选Package,Package path填.(表示当前模块) - 不要手动填
go run main.go这种命令;GoLand 内部调用的是go run .,它才按go.mod解析 import 路径 - Working directory 保持默认(即项目根目录);如果想让每个
main.go都以自身所在目录为起点运行,可改成$FileDir$,但要注意这会导致跨目录 import 失败 - 测试函数要可识别:文件名必须是
_test.go结尾,函数名必须是func TestXxx(t *testing.T),首字母X大写,且不能被//go:build约束屏蔽
最容易被跳过的其实是 go 是否真在 PATH 里、GOROOT 是否指向根目录、以及 go.work 是否意外存在——这三个点卡住的人最多,但排查起来只要三分钟。其他配置可以边写代码边补,这三项必须在写第一行 fmt.Println 前搞定。










