goland保存时自动导入缺失包并删除未用import,须同时满足:安装goimports且加入path、启用actions on save中的optimize imports、项目含go.mod且以模块根目录打开、清理缓存。

GoLand 保存时自动导入缺失包、删除未用 import,必须同时启用 goimports 和对应触发机制——只装工具或只勾选项都不行,缺一不可。
确认 goimports 已安装且在 PATH 中
GoLand 不会帮你装 goimports,它只调用系统命令。终端里运行 goimports -version 报错,保存时就完全静默失效。
- 执行
go install golang.org/x/tools/cmd/goimports@latest安装(Go 1.21+ 推荐加@latest) - 检查
$GOPATH/bin是否在PATH:运行echo $PATH | grep "$(go env GOPATH)/bin",没输出就得手动加进 shell 配置(如~/.zshrc),再重载 - 验证:终端执行
which goimports应返回路径,goimports -v应输出版本信息
启用 “Optimize imports on save” 而非仅 “Reformat on save”
Reformat code 只调 gofmt 处理缩进和空行;真正删未用 import、分组排序、补全缺失包的是 Optimize imports。两者功能不同,不能互相替代。
GoLand 2026.1.1 是 2026.1 发布后的首个维护修正版本,适合已经开始体验 2026.1 新功能并希望同步补丁的开发者。它更适合用于入门项目、现有项目迁移测试和 IDE 行为验证。
- 打开 Settings → Tools → Actions on Save(不是旧版 File Watchers)
- 勾选
Optimize imports和Reformat code(建议都开,效果更完整) - 务必勾选
Only for changed files,否则每次保存都扫整个项目,卡顿明显 - 这里不填路径——GoLand 内部自动调用
goimports,前提是上一步已装好且在PATH
确保项目是 Go module 且以根目录打开
goimports 依赖 go list 解析 import 路径。没有 go.mod 或 IDE 没在模块根目录打开,它连“哪些是本地包”都识别不了,直接放弃清理。
- 在项目根目录运行
go mod init example.com/myproject(模块名合法即可) - 关闭当前项目,用 GoLand **重新打开该目录**(不是子目录),右下角状态栏应显示
Go SDK + module: example.com/myproject - 若仍无效,终端执行
goimports -w main.go看是否报错(比如no modules found),这比 IDE 日志更快定位问题
别让自动导入反向污染补全列表
开了自动导入后,GoLand 可能从 go.mod 所有间接依赖里补全包名,导致提示里冒出一堆你根本没 import 过的包。
- Settings → Editor → General → Auto Import → 取消勾选
Add unambiguous imports on the fly - Settings → Languages & Frameworks → Go → Imports → 关掉
Use short names for imported packages - 在项目根目录
.idea/misc.xml中添加:<option name="useImportPathsForIndexing" value="true"></option>,强制只索引实际 import 的路径
最容易被忽略的一点:改完配置后,IDE 缓存可能没刷新。如果一切看起来都对但就是不生效,先试 File → Invalidate Caches and Restart → Just Restart——很多“玄学失效”其实只是缓存没更新。










