编程 Go 1.26 的 go fix 变成 modernizers 入口,历史修复器被全部移除

2026-09-09 21:04:38

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 fixgo vet 共用同一个 Go 分析框架。也就是说,go vet 里能报诊断的 analyzer,也能在 go fix 里建议并落地修复。

官方口径是这些 fixer 不应改变程序行为。因此若某次 fix 出问题,应报 issue,而不是绕道处理。

用法

用法照旧:

go fix ./...

适用场景与注意点

适用:

  • 老项目批量升级到新惯用法,例如把 range 老写法、某些库 API 用法现代化。
  • 组织内部 API 迁移,用 //go:fix inline 做源码级替换。

不适用:

  • 不要把它当成盲目升级工具;跑完后应执行完整测试。
  • 对行为语义变化敏感的代码,先看对应 fixer 的说明。

版本需自行核对。

复制全文 生成海报 Go 工具链 go fix 重构

推荐文章

程序员茄子在线接单