Ctrl+Alt+L格式化代码(全文件或选中段),不处理import;Ctrl+Alt+O专优import(删未用、添缺失、分组排序);保存时自动格式化+goimports需同时开启Save Actions与Go设置,并正确安装配置goimports。

Ctrl+Alt+L 格式化当前文件或选中代码段
这是最直接、最常用的格式化方式,不依赖外部工具,响应快且稳定。按下 Ctrl+Alt+L(macOS 是 Cmd+Option+L)后,GoLand 会按当前 Go 语言代码风格设置重排整个文件;如果事先选中了一段代码,则只格式化该片段。
常见错误现象:按完没反应,或格式结果和 go fmt 输出不一致。
- 没反应通常是快捷键被系统或其他插件占用,可进
Settings → Keymap搜索Reformat Code确认绑定 - 格式差异说明 IDE 样式设置与官方风格存在偏差,需检查
Settings → Editor → Code Style → Go中的缩进、空格、换行等配置 - 注意:该操作默认不处理
import,哪怕有未使用或缺失的包,也不会增删或重排
Ctrl+Alt+O 专门优化 import 语句
单独执行导入管理,比 Ctrl+Alt+L 更精准。它会自动删除未使用的包、添加缺失的导入、按标准分组(标准库 / 第三方 / 本地)并排序。
使用场景:刚写完一个函数,引入了新包但忘了加 import;或者重构后发现一堆灰色(未使用)的导入行。
- 必须确保光标在 .go 文件内,否则快捷键无效
- 若项目不在 module 根目录下,
go list可能无法解析路径,导致“添加缺失导入”失败 - 和
Ctrl+Alt+L不同,这个操作不改变代码结构、缩进或空行,只动 import 块
保存时自动格式化 + 运行 goimports
想让每次 Ctrl+S 都同时完成格式化 + 导入管理,就得组合启用两个开关:
GoLand 2026.1.1 是 2026.1 发布后的首个维护修正版本,适合已经开始体验 2026.1 新功能并希望同步补丁的开发者。它更适合用于入门项目、现有项目迁移测试和 IDE 行为验证。
- 开启
Settings → Tools → Save Actions → Reformat code - 再开启
Settings → Languages & Frameworks → Go → Formatting → Run goimports
关键点在于:后者依赖已安装的 goimports 工具。如果未安装或路径错误,保存时会弹出 Command not found 错误,且 fallback 到仅格式化(不处理 import)。
容易踩的坑:
-
goimports必须通过go install golang.org/x/tools/cmd/goimports@latest安装,旧版golang.org/x/tools/cmd/goimports(无@latest)可能不兼容 Go 1.21+ - IDE 中的
goimports path需手动指定为$GOPATH/bin/goimports或实际二进制路径,不能只写goimports - 如果文件不属于任何 module(即没有
go.mod),goimports无法识别本地包路径,import 分组会错乱
空行缩进清理:让代码块之间更紧凑
默认情况下,GoLand 会在空行里保留缩进字符(空格或制表符),导致函数之间、结构体之间看起来“空隙过大”。这不是 bug,是可关闭的行为。
操作路径:Settings → Editor → Code Style → Go → Tab and Indent → Keep indents on empty lines,取消勾选。
- 关掉后,
Ctrl+Alt+L会清空所有空行中的空白字符,只留换行符 - 已有文件需手动触发一次格式化才能生效,不能靠设置自动修复历史空行
- 如还需合并多个连续空行,要额外调整
Code Style → Go → Blank Lines → Keep maximum blank lines,设为1 - 该设置是语言级的,对 Go 生效,不影响 JS/TS 等其他文件
真正难搞的是那些带注释或模板标记的“伪空行”,比如 // TODO 后跟空行,它们不会被上述设置影响,得人工判断是否保留。

















