Go 1.26 的 go fix 变成 modernizers 入口,历史修复器被全部移除
Go 1.26 Release Notes:https://go.dev/doc/go1.26
Go 1.26 把 go fix 从“过时历史修复器”重构为 modernizers 的入口:一条命令把老代码库更新到新惯用法和核心库 API。已过时的历史修复器全部移除;初始自带几十个 fixer,覆盖现代语言特性和库 API。同时带源码级 inliner,可通过 //go:fix inline 指令自动化自己的 API 迁移。
机制
新的 go fix 与 go vet 共用同一个 Go 分析框架。也就是说,go vet 里能报诊断的 analyzer,也能在 go fix 里建议并落地修复。
官方口径是这些 fixer 不应改变程序行为。因此若某次 fix 出问题,应报 issue,而不是绕道处理。
用法
用法照旧:
go fix ./...
适用场景与注意点
适用:
- 老项目批量升级到新惯用法,例如把
range老写法、某些库 API 用法现代化。 - 组织内部 API 迁移,用
//go:fix inline做源码级替换。
不适用:
- 不要把它当成盲目升级工具;跑完后应执行完整测试。
- 对行为语义变化敏感的代码,先看对应 fixer 的说明。
版本需自行核对。