JetBrains 官方出手治"AI 写的过时 Go":go-modern-guidelines——装进 Claude Code、Codex、Cursor 就能用,3400+ 星的官仓,最近还上了 GitHub Trending。
病因说得很准:模型的训练数据有滞后,而旧写法在数据里出现得又更多——于是 AI 爱写手写 if-else 比大小、for 循环查切片、一层层判 nil;代码能跑,但放进今天的 Go 里就是过时的。
药方是给 agent 一套现代写法:比大小用 max(a, b)、查包含用 slices.Contains、一串 nil 判断换成 cmp.Or(a, b, c),连 Go 1.26 新加的 new(42)、errors.AsType[T](err) 都收在里面。
关键设计在于它先读 go.mod 里的 Go 版本,再按项目的实际版本挑可用写法;方向与 Go 团队自己的 modernize 分析器一致,Junie 这类 agent 也能用。
我的看法:这条的价值在于把规范放进了执行路径——多数团队的代码风格靠评审口头纠正,这里是 agent 动手之前就按版本对齐。"让 AI 写的 Go 看起来像今年写的,而不是五年前"这句戳中了通病:模型的默认输出永远带着训练截止时间的旧味,补法不是等新数据,而是把版本约束前置。这个思路不限于 Go——任何语言的团队都能抄:先声明版本与规范,再让模型动笔。
139 浏览 0 评论
0 反应













