尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

AI 还在写“老式 Go”?Alan Donovan 详解 Go 代码的现代化

AI 还在写“老式 Go”?Alan Donovan 详解 Go 代码的现代化
📅 发布时间:2026/6/19 8:31:13

大家好,我是Tony Bai。

“Go 承诺了兼容性,但这并不意味着我们应该永远停留在过去。”

在 GopherCon 2025 上,Go 团队核心成员、静态分析工具专家 Alan Donovan 带来了一场题为《Analysis and Transformation Tools for Go Codebase Modernization》的精彩演讲。

他的分享揭示了一个有趣的现象:当我们还在为 AI 生成的代码欢呼时,Go 官方团队却发现 AI 正在固化过时的编程模式。为了应对这一挑战,官方正在构建一套强大的自动化工具链,帮助我们将代码库带入 Modern Go 的时代。

本文将带你深入这场演讲的核心,揭秘 Go 官方如何通过工具化手段,解决 AI 时代的“代码老化”问题。

为什么要“现代化”?

Go 的兼容性承诺是其成功的基石,但这同时也带来了一个副作用:旧的代码永远能跑,所以我们很少有动力去更新它。

然而,随着 Go 版本的迭代,语言和标准库引入了大量旨在提升可读性、性能和安全性的新特性:

Donovan 展示了一个经典案例:一段传统的、使用了strings.Split和三段式for循环的代码(如下图):

通过引入新特性(迭代器、slices.Contains、range int),这段代码不仅减少了 6 行,还消除了不必要的内存分配,逻辑变得一目了然。新的现代Go代码如下图:

现代化的意义,不仅在于代码质量的提升,更在于开发者能力的进化。通过工具自动应用这些新模式,开发者能在潜移默化中学习到“更地道”的 Go 写法。

AI 的局限与工具的使命

Donovan 分享了一个令人深思的实验:他测试了当前最先进的“思考型”大模型,要求它们使用最新的 Go 特性编写代码。

结果令人大跌眼镜:AI 顽固地坚持使用旧式的写法。

即使在被明确提示使用新特性后,AI 依然会编造出“这个特性在 1.22 中不可用”等谎言来为自己辩护,或者即使使用了新特性,也经常写出错误的代码。

“AI 是在旧代码的海洋中训练出来的。如果全世界的代码都是旧的,AI 就会永远说着一口‘老式 Go’的方言。”

这揭示了一个深刻的矛盾:AI 正在固化过时的编程模式。打破这个循环的唯一方法,就是大规模地更新现有的代码库,让 AI 学习到新的语料。而这,正是 Go 官方工具链的使命。

第一条路径——定制化的Modernizers

为了解决这个问题,Go 团队基于go/analysis框架(也就是go vet和gopls的底座),开发了一套名为Modernizers的分析器。

Modernizer是一个特殊的 Linter,不仅能发现问题,还能提供自动修复 (Fix),并且这个修复必须是使用新特性且绝对安全的。

Go 团队已经开发了约 20 个 Modernizers,并在goplsv0.18 中发布。你现在在编辑器中看到的很多“建议修改”,背后就是它在工作。

然而,开发 Modernizer 的过程充满了艰辛。Donovan 以range int这个看似简单的重构为例,展示了它在处理变量作用域、副作用顺序时遇到的 4 个极其隐蔽的 Bug。比如下面这个:

“直接的语法树操作 (AST manipulation) 极其困难,即使是经验丰富的专家也容易出错。”

Modernizers 虽然好用,但开发成本极高,且只能针对特定特性进行定制,难以作为通用的解决方案。

注:要使用上述modernizer,需要单独运行命令go run golang.org/x/tools/go/analysis/passes/modernize/cmd/modernize@latest -fix ./...。

第二条路径——通用的Auto-Inliner

为了解决 Modernizers 的局限性,赋能社区自己进行现代化改造,Go 团队探索出了一条更通用、更安全的路径:基于内联 (Inlining) 的“自助式重构”。

核心思想

如果我们想要废弃一个旧函数(如oldmath.Sub),并引导用户使用新函数,库作者只需要做两件事:

  1. 保留旧函数,但将其实现修改为直接调用新函数。

  2. 添加魔法注释://go:fix inline。

工具的威力

当gopls或未来的go fix命令看到这个注释时,它会自动将所有调用oldmath.Sub(a, b)的地方,安全地替换为newmath.Sub(b, a)。

注:由于newmath.Sub(b, a)是oldmath.Sub(a,b)的新实现,因此称为inline,而且是source-level inline。

实际的替换是这样的:

这个机制的强大之处在于:

  • 安全性:内联器 (Inliner) 是一个极其复杂的算法(约 7000 行代码),它已经系统性地处理了所有副作用顺序、变量遮蔽等边缘情况。基于它进行的重构,天然就是安全的。

  • 自服务 (Self-Service):任何库的作者,都可以通过添加一行注释,来引导用户迁移到新的 API。这不再是 Go 官方的特权。

Google 内部的 C++ 团队已经利用类似的机制清理了 200 万处调用。Go 团队计划在 Go 1.26 或 1.27 中,将这一能力正式带入go fix命令。

小结:拥抱变化,拥抱工具

Alan Donovan 的演讲,为我们描绘了一个清晰的未来:

  1. Modernizers将继续作为官方维护的精品工具,帮助我们采纳语言的新特性。

  2. Auto-Inliner将赋能所有库作者,以一种安全、自动化的方式推动生态系统的演进。

作为 Gopher,我们需要做的,就是及时更新我们的工具链,关注gopls的提示,并乐于接受这些自动化的改进。因为在 AI 还在学习旧代码的时候,我们的工具已经准备好带领我们通向 Modern Go 的未来。

资料链接:https://www.youtube.com/watch?v=_VePjjjV9JU


如果本文对你有所帮助,请帮忙点赞、推荐和转发!

点击下面标题,干货!

- Go fix命令将迎“重生”:移除过时功能,为集成现代化代码分析器铺平道路

- Go 1.22中值得关注的几个变化

- Go 1.26 新特性前瞻:从 Green Tea GC 到语法糖 new(expr),性能与体验的双重进化

- Go 1.18之后的语法新特性Quiz,你能做对几个?

- 写出Go标准库级别文档注释的十个细节

- 从Go路由选择看“标准库优先”:何时坚守?何时拓展?

- 🚀重磅!Go 1.26 RC1 发布:Green Tea GC 登场,语法糖真香!


🔥 还在为“复制粘贴喂AI”而烦恼?我的新极客时间专栏《AI原生开发工作流实战》将带你:

  • 告别低效,重塑开发范式

  • 驾驭AI Agent(Claude Code),实现工作流自动化

  • 从“AI使用者”进化为规范驱动开发的“工作流指挥家”

扫描下方二维码👇,开启你的AI原生开发之旅。

相关新闻

  • 2022-《Deep Clustering: A Comprehensive Survey》
  • 基于改进算子遗传算法的针对集成式旅行商与覆盖路径规划问题研究(Python代码实现)
  • LangFlow多语言翻译流水线构建教程

最新新闻

  • 慧曼除菌洗碗机:守护母婴餐具健康 - 服务品牌热点
  • 2026年6月青岛黄金回收门店走访实录 - 余生黄金回收
  • 南充六家黄金回收门店实地走访全记录 - 余生黄金回收
  • GPT-4o吉卜力风格生成能力三重评估:符号、工艺与叙事
  • 湖北现代科技学校2026年招生简章 - 武汉中职最新信息发布
  • 2026年免费工具:PDF转PPT并保留动画效果,这3个微信工具实测好用 - 时时资讯

日新闻

  • 5分钟掌握Python进化算法:Geatpy高性能优化工具完全指南
  • Microchip 24AA044 EEPROM选型与应用全指南:从参数解析到实战编程
  • 华为的鸿蒙到底有多牛?为什么称作遥遥领先?

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号