Alt+Enter 默认不删除未用 const,因 Go 编译器不报错、IDE 未启用 staticcheck 等检查项,且常量可能被反射、生成代码等间接引用;需手动启用工具(如 staticcheck 或 golangci-lint)后才支持快速修复。

Alt+Enter 不能一键移除未使用的常量,它只提供“删除未使用导入”或“优化导入”的快速修复,对未使用的常量(const)默认不触发删除建议。
为什么 Alt+Enter 对未用 const 没反应
GoLand 的 Alt+Enter 快速修复机制依赖于当前光标位置的上下文。当光标停在未使用的 const 上时,IDE 默认不标记为“可安全删除”,因为:
- Go 编译器本身不报错,仅部分 linter(如
staticcheck)会警告SA9003: unused constant - GoLand 默认未启用该检查项,或未将其设为“可快速修复”级别
- 常量可能被反射、生成代码、测试文件或未分析的包间接引用,IDE 保守起见不主动建议删
真正能删未用 const 的方法
必须配合外部工具或启用对应检查:
GoLand 2026.1.1 是 2026.1 发布后的首个维护修正版本,适合已经开始体验 2026.1 新功能并希望同步补丁的开发者。它更适合用于入门项目、现有项目迁移测试和 IDE 行为验证。
- 安装并启用
staticcheck:在Settings → Tools → Staticcheck中勾选启用,它会在未用const下划波浪线,此时将光标放上去再按Alt+Enter,才可能出现Remove unused constant选项 - 用
go vet -unused(Go 1.23+):需手动运行命令,不集成进Alt+Enter流程 - 用
golangci-lint配合 IDE:在Settings → Tools → golangci-lint中启用,并确保unused插件开启;错误行上Alt+Enter可看到Run golangci-lint for this file,但仍是扫描而非直接删
别指望自动删,手动确认仍是必须的
即使工具标出“未使用”,也要注意这些情况:
- 常量名以
_开头(如const _ = "version"),常用于强制链接或版本标记,删了可能破坏构建 - 被
//go:embed或//go:generate引用,静态分析无法识别 - 定义在
internal/包中,但被同模块其他未打开的文件引用 - 值是
unsafe.Sizeof或reflect.TypeOf等编译期求值表达式,表面“未读取”实则影响二进制
最稳妥的做法:先用 golangci-lint run --enable=unused 扫一遍,再逐个打开提示文件,人工判断是否真可删——Alt+Enter 在这里只是辅助跳转,不是删除开关。

















