后端开发 2026-08-18 20

AI 都会写代码了,Go 还有必要学吗?写了 8 年后端,我的答案变了

老张

资深系统架构师

封面-AI 都会写代码了,Go 还有必要学吗?写了 8 年后端,我的答案变了

AI 都会写代码了,Go 还有必要学吗?写了 8 年后端,我的答案变了

这两年,我被问得最多的问题不是"Go 和 Java 怎么选",而是这句:

"AI 都会写代码了,我还在学 Go,是不是傻?"

问的人有刚转行的小伙子,也有写了十几年 Java 的老鸟。他们说得都有道理:Python 生态热到发烫,TypeScript 贴着产品走,Rust 主打安全,Java 在企业后端稳如老狗。Go 夹在中间,看起来样样都行,又样样都不突出。

但我的答案,反而越来越坚定:

AI 时代,Go 最大的优势不是它"多强",而是它"少乱"。

这句话乍一听不像什么优点。但你真把 AI 拉进日常开发,就会明白——"少乱"是一种非常贵的能力。

AI 最怕的不是不会写,是太会写

以前评价一门语言,我们问的是:性能怎么样?生态怎么样?语法够不够高级?能不能写出很抽象的设计?

AI 开始写代码之后,问题全变了。

你会发现,AI 出问题,很少出在"完全不会写",而是出在"太会写了"。

让它写一段业务逻辑,它能给你三种风格。 让它封装一个模块,它能顺手抽象出五层接口。 让它修一个 bug,它可能顺便"优化"一片你根本不想动的代码。

这时候,语言的约束感,就是生产力

Go 的语法不花哨,工程结构不鼓励炫技,格式化工具统一到几乎没有争论。对人来说,这有时候显得"不够酷";但对 AI 来说,这等于给它铺了一条窄一点、直一点的路。

你不用反复叮嘱它:别换风格、别造 DSL、别把简单逻辑写成魔法、别在一个函数里塞满看似聪明的泛型技巧。

因为 Go 本身就不鼓励这些。

gofmt 治好了 AI 的"精神分裂"

我喜欢 Go 的一个很私人的原因:打开一个陌生的 Go 项目,你不会先被风格吓一跳。

gofmt 把格式争论直接干掉了。go test、go vet、go mod 也足够标准。目录结构虽然不是强制唯一,但大多数团队最后都收敛到差不多的样子。

这事对 AI 辅助开发来说,重要到什么程度?

AI 不是只写一段孤立代码,它经常要读上下文、补实现、改测试、修构建。如果一个项目风格非常分裂——这个文件一种写法,那个文件另一种写法——AI 就会"学坏":挑一个看起来最像的,但不一定是你想要的。

在 Go 项目里,这种问题少很多。

你让它"按现有风格补一个 repository 方法""给这个 handler 加参数校验""照着这个 service 写一组 table-driven tests",它通常能稳稳落在同一套工程习惯里。

这不是因为 AI 特别懂 Go,而是 Go 留给它自由发挥的空间,本来就没那么大

显式的代码,才经得起 AI 时代的 review

AI 写代码之后,review 从"走流程"变成了"保命"。

以前是你写我看,现在是 AI 写、你也要看。这时候,Go 那份被吐槽了十年的"啰嗦",开始变成优点。

if err != nil {
    return err
}

以前我也嫌它重复。但当 AI 参与进来,我越来越感谢这种重复——显式,意味着容易检查

错误有没有被吞掉、事务有没有回滚、资源有没有关闭、边界条件有没有提前返回,一眼就能看到。AI 在 Go 里写错,通常错得比较"明",很少藏在复杂的继承、隐式类型转换、运行时魔法、装饰器链路里。

跟 AI 协作,最怕的不是代码多几行,而是它写了一段"看起来很优雅,但你不知道它什么时候爆"的代码。

Go 不追求这种优雅。它像一个话少但可靠的同事:每一步都摆在桌面上。你可以不喜欢它的直白,但你很难说它阴险。

上下文窗口很贵,Go 帮你省钱

AI 写代码有个现实限制:上下文窗口是有限的。你不可能每次都把整个系统塞给它。

这时候,Go 的简单性就很占便宜。

一个 Go 文件通常不需要额外解释:类型在哪、接口在哪、函数怎么调、错误怎么返、依赖怎么注入,都很直接。AI 读 Go 代码,不用花很多 token 去理解语言层面的花活,更多上下文可以留给业务本身。

AI 开发真正贵的地方,不是让它生成代码,而是让它理解你的系统现在处于什么状态。 语言越复杂、项目约定越隐晦,AI 越容易把精力浪费在猜测上。

Go 把很多事情压平了。你丢给它一个 service、一个 store、一个 proto、一个 test,它大概率能顺着读下去。这种"可读性"过去只是人的体验,现在直接变成了 AI 的生产力。

未来的 AI 编程是 agent,而 agent 最爱 Go

很多人对 AI 编程的理解还停留在"聊天框里生成一段代码"。但更常见的形态,是 agent:

它读代码 → 改文件 → 跑测试 → 看报错 → 继续修 → 最后给你总结。

Go 在这件事上舒服得过分,因为工具链太稳定了:

go test ./...
go vet ./...
gofmt -w .
go mod tidy

命令短、清晰、确定性强,AI 基本不用猜。你让 agent 在 Go 项目里干活,它可以很自然地进入循环:改代码 → gofmt → go test → 看失败 → 修复 → 再测试。

相比之下,很多项目要先理解一堆构建系统、脚手架、插件、转译配置,agent 光"进入状态"就得耗半天。

Go 的工程哲学本来就是:少一点可配置,多一点约定。到了 AI 时代,这套哲学特别适合自动化——agent 不怕干活,它怕环境太玄

还有一块被低估的:AI 基础设施,Go 的主场

别忘了,AI 时代不只有"用 AI 写业务代码",还有大量"支撑 AI 的代码":

模型网关、任务队列、流式响应服务、MCP server、Agent backend、工具调用服务、日志审计、权限会话、高并发 API……

这些东西不一定都要 Python 写。Python 适合模型实验、数据处理、快速验证;但当你要把一套 AI 能力变成稳定跑着的服务,Go 依然非常合适——部署简单、二进制干净、内存可控、并发模型直观、线上排查成熟。

AI 应用会越来越多,但它们背后仍然需要传统后端能力:认证、限流、计费、队列、缓存、审计、监控、灰度、回滚。

这些东西不性感,但决定系统能不能活。而 Go 天生就是干这个的

别误会,Go 不是完美答案

我不想把 Go 吹成 AI 时代的唯一选择。它不是。

做模型训练,Python 是主场;做前端产品,TypeScript 绕不开;要极致性能和内存安全,Rust 很香;在大型企业系统里,Java 生态厚得可怕。

Go 的问题也真实存在:表达力没那么强、泛型比较克制、错误处理写多了确实烦、某些抽象写出来不够漂亮。AI 生成 Go 代码,一样会漏边界、漏测试、漏并发场景。

但我越来越觉得,AI 时代不奖励"最会表达复杂性"的语言,它奖励"能把复杂性控制住"的语言。Go 恰好站在这里。

给 Go 开发者的真心建议

别把 AI 当成"更快的外包",把它当成一个刚入组、但手速很快的同事。

你需要给它立规矩:

  • 让它遵守 gofmt,跑 go test ./...
  • 让它按现有目录结构改,少做无关重构
  • 让它把错误处理写完整,别为了"高级"而高级
  • 让它解释关键取舍,而不是默默替你决定

Go 的优势,从来不是让 AI 一次写出完美代码,而是让你更容易把 AI 写出来的代码,拉回工程秩序里

这才是重点。

AI 让代码生成变便宜了,但可靠性、可维护性、可审查性,没有因此变便宜——甚至更贵了。代码越来越容易出现,系统也越来越容易变乱。

这时候,Go 的价值不是"写得快",而是**"乱得慢"**。

如果你问我,AI 时代还值不值得学 Go?我的答案是:值得,但理由和以前不一样了。

以前学 Go,是因为它适合云原生、适合后端、适合高并发。这些理由今天依然成立。

现在又多了一条:Go 是一门很适合和 AI 一起工作的语言。它简单、稳定、显式、工具链统一、工程习惯清楚。它不鼓励你和 AI 一起炫技,而是逼着你们把事情写明白。

在 AI 写代码越来越容易的时代,真正稀缺的不是代码本身,而是——代码生成之后,系统还能不能保持清醒。

而 Go 的优势,正在这里。

本文由老张整理编写。如果你也在 AI 辅助开发里用 Go,欢迎留言聊聊你的体验。

分享:
返回文章列表