在goland中配置专用run configuration:点击「add configuration…」→「go build」,package path填./cmd/api(非文件路径),working directory设项目根目录,program arguments传参,environment variables设env=dev等,避免手动go run出错。

GoLand 里怎么配运行配置来避免每次手动 go run
直接在 GoLand 里点绿色三角运行单个 .go 文件,本质是调用 go run main.go。但如果你的项目有多个入口(比如 cmd/api/main.go 和 cmd/rpc/main.go),或者需要传参、环境变量、工作目录,每次都手动改就容易出错、漏配。
GoLand 的「Run Configuration」就是为这事设计的,不是摆设。关键在于别用默认的「Run Anything」临时配置,而是建专用配置并复用。
- 点击右上角「Add Configuration…」→ 「Go Build」→ 填写
Package path,例如./cmd/api(不是文件路径) -
Working directory设为项目根目录,避免相对路径加载配置失败 - 需要传参?在
Program arguments里填,比如--config=config/config.yaml - 要指定环境变量(如
ENV=dev)?在Environment variables栏加,别写成export ENV=dev—— GoLand 不执行 shell 命令 - 勾选
Include modules from external libraries,否则可能找不到github.com/xxx的依赖
为什么改了代码还要重新 build 配置
GoLand 默认不会自动检测你新增了 cmd/xxx/main.go 并把它加进可选列表。它只索引当前打开的包和 go.mod 里声明的依赖,不扫描整个 cmd/ 目录。
常见现象:新加了 cmd/admin/main.go,但在 Run Configuration 的 Package path 下拉里找不到它,手动输又报错 no Go files in ...。
GoLand 2026.1.1 是 2026.1 发布后的首个维护修正版本,适合已经开始体验 2026.1 新功能并希望同步补丁的开发者。它更适合用于入门项目、现有项目迁移测试和 IDE 行为验证。
- 先确认该目录下有
main.go且包名是main - 在项目根目录执行一次
go list ./cmd/admin,看是否能列出 —— GoLand 依赖这个命令的结果 - 如果不行,可能是
go.mod没包含该子模块,或该目录被.gitignore或 GoLand 的「Excluded」标记屏蔽了(右键目录 → 「Mark Directory as」→ 取消「Excluded」) - 最后重启 GoLand 索引:菜单 →
File → Reload project
调试时如何复用同一套运行参数
调试(Debug)和运行(Run)在 GoLand 里是两套独立配置,但参数几乎一样。别新建一个 Debug 配置再填一遍 —— 容易漏掉环境变量或参数,导致运行正常、调试崩。
- 建好 Run 配置后,点右上角配置名旁的下拉箭头 → 「Edit Configurations…」
- 左侧选中你的 Run 配置 → 点右上角「Duplicate」→ 新配置自动命名为
xxx [1] - 把新配置的
Type改成Go Test或保持Go Build,然后点「Debug」图标启动即可 - 调试时断点生效的前提是:二进制带调试信息(GoLand 默认开启
-gcflags="all=-N -l"),且没启用Delve的「Allow async stack traces」(某些 goroutine 场景会跳过断点)
多个服务一起启,能不能一键全开
GoLand 原生不支持“同时跑 3 个服务”,但可以靠「Compound」配置组合多个 Run 配置,按顺序启动 —— 注意不是并发,是串行等前一个 ready 后再启下一个。
- 「Add Configuration…」→ 「Templates」→ 「Compound」→ 点「+」添加已存在的 API、RPC、Gateway 配置
- 勾选
Share through VCS,这样团队成员拉代码后也能直接用 - 实际启动时,第一个服务输出
server started on :10002后,第二个才开始执行;如果第一个卡住(比如连不上 Redis),后面全阻塞 - 真正需要并行启多个服务?得用外部工具,比如
mage serve或docker-compose up,GoLand 只负责调起终端执行命令
最常被忽略的是 Working directory 和环境变量作用域:同一个配置在不同机器上行为不一致,八成是因为 Working directory 指向了子目录,导致 config.yaml 加载失败;或者 Environment variables 写成了 ENV=dev;PORT=8080(分号分隔错误,应该换行或用空格)。










