GoLand无原生热重载,仅支持两种方式:一是File Watchers触发go run实现保存即运行(无进程管理);二是用air工具实现完整热重载(监听→编译→杀旧→启新)。

GoLand 本身不提供真正的热重载(hot reload),所谓“修改后自动构建”只有两种可行路径:一是用 File Watchers 触发 go build 或 go run,属于保存即执行、无进程管理;二是引入外部工具 air,它才具备监听 + 编译 + 杀旧进程 + 启新进程的完整热重载能力。
File Watchers 配置 go run 实现保存即运行
这是最轻量、无需额外安装的方式,适合快速验证逻辑,但每次都是全新进程,无法保留内存状态:
-
Program填go(不是go run,GoLand 会自动拼接) -
Arguments填run main.go(若main.go在cmd/myapp/下,则填run ./cmd/myapp) -
Working directory设为$ProjectFileDir$,确保能读到go.mod - 勾选
Auto-save edited files to trigger the watcher和Trigger the watcher on external changes - Scope 设为
Project Files,再点铅笔图标,加**/*.go,排除vendor/**和**/testdata/**
注意:go run 不生成二进制,不涉及权限问题,也无需手动清理旧进程——但它不会复用已有端口,address already in use 错误基本不会出现,真出现了说明你用了 go build 并手动执行了输出文件。
用 air 实现完整热重载
air 是目前 Go 生态最接近 nodemon 的方案,它监听文件变化、编译、终止上一个进程、启动新实例,还支持自定义构建命令和忽略路径:
GoLand 2026.1.1 是 2026.1 发布后的首个维护修正版本,适合已经开始体验 2026.1 新功能并希望同步补丁的开发者。它更适合用于入门项目、现有项目迁移测试和 IDE 行为验证。
- 先全局安装:
go install github.com/air-verse/air@latest - 把
$HOME/go/bin加入系统PATH(Windows 是%USERPROFILE%\go\bin),重启 GoLand 终端生效 - 在项目根目录运行
air即可启动;首次运行会自动生成.air.toml配置文件 - 默认监听
**/*.go,如需忽略某些路径,在.air.toml的[build]段下加exclude_dirs = ["vendor", "docs"] - 若端口被占,改
.air.toml中port字段,或直接air -p 8081
常见卡点:air 启动后没反应?检查终端当前路径是否为项目根目录(必须含 go.mod);提示 command not found?确认 PATH 已更新且终端已重启。
为什么 go build + File Watchers 不推荐用于开发期
它看似更“底层”,实则容易陷入维护陷阱:
- 生成的二进制默认无执行权限(Linux/macOS),得在
Arguments末尾追加&& chmod +x $ProjectFileDir$/bin/main - 每次
go build都覆盖同名文件,但旧进程不会退出,address already in use成高频报错 - 需要手动
pkill -f 'bin/main'或写脚本清理,违背“开箱即用”初衷 - Windows 上路径含空格时,
Program必须用绝对路径(如C:\Go\bin\go.exe),Arguments里带路径的部分要用双引号包住
除非你明确需要生成并调试二进制本身,否则开发阶段应优先选 go run 或 air。
真正容易被忽略的是:无论用哪种方式,GoLand 的索引必须与 go.mod 同步。如果改了依赖但 import 仍标红,先 go mod tidy,再右键项目 → Synchronize;若还不行,就 Invalidate Caches and Restart——缓存错位比配置错误更难排查。

















