标签 标准库 下的文章

在 AI 编码时代,为什么我们依然选择 Go 而不是 Rust?

本文永久链接 – https://tonybai.com/2026/06/18/why-choose-go-over-rust-today-in-ai-age

大家好,我是Tony Bai。

随着 Cursor、Claude Code 和 Copilot 等 AI 编程智能体的爆发,整个技术圈的开发门槛被前所未有地铲平了。

在过去,Rust 最大的劝退门槛是它那极其陡峭的路径——生命周期、借用检查器(Borrow Checker)、复杂的泛型特征(Traits)。但如今,AI 可以轻而易举地帮你写出能够通过编译的复杂 Rust 代码。

这就引发了一个最近在 Reddit 的 r/golang 讨论区的终极发问“既然 AI 已经帮我们消灭了 Rust 的学习和编写门槛,今天我们为什么还要选择 Go?(Why choose Go over Rust today?)”

海外大厂的资深架构师和 SRE 们纷纷下场,用生产环境中的血泪教训,给出了一个极具警示意义的工程结论:AI 极大地降低了“写”代码的门槛,却无形中成倍抬高了“读”与“维护”代码的成本。而在充斥着 AI 生成代码的时代,Go 语言那近乎固执的“简单与无聊”,反而成为了它最坚不可摧的壁垒。

以下是为什么在 AI 时代,Go 依然是很多企业技术选型终极首选的深层逻辑。

致命的“温水煮青蛙”:谁来在凌晨三点排查 AI 写的代码?

在帖子中,一位获得了极高赞同的资深开发者贴出了一句直击灵魂的忠告:

“如果你打算让 AI 写完所有代码且你从不检查,那么 Rust 是完美的(因为编译器会守住安全底线)……前提是,你是那个在凌晨 3 点值班、随时准备被报警电话叫醒去排查问题的人。”

这句话道出了软件工程中最朴素的真理:编写代码是一时的,而阅读、评审(Code Review)和在线排查(On-Call)才是永恒的。

大模型在生成代码时,为了迎合编译器的规则,往往会采用极其复杂、精妙但难以阅读的“高级语法特性”。

  • AI 写的 Rust 代码:可能会充斥着各种复杂的泛型嵌套、宏(Macros)、高度抽象的 Trait 绑定以及微妙的生命周期标注。它确实能通过编译,但当它在生产环境中遇到边界条件发生崩溃时,由于代码不是你写的,面对这堆“天书般的高级 Rust 代码”,你根本无法在短时间内看清它的真实意图。
  • AI 写的 Go 代码:由于 Go 语言刻意限制了特性的复杂性,奉行“一种问题只有一种解法”的极简主义。AI 写出来的 Go 代码,看起来和你自己写的、或者你同事写的没有任何区别。任何一个普通的后端开发,都能在 30 秒内梳理清楚数据流向。

在 AI 大规模入侵开发流水线的时代,“易读性”和“低认知负载(Cognitive Load)”成了比“易写性”更重要的资产。Go 的无聊和易读,在这个时候反向成了它最大的护城河。

运行时的隐形深渊:GMP 模型 vs 协作式异步的“雷区”

在涉及到高并发的系统设计时,很多开发者以为 Rust 拥有完美的类型安全(线程安全的 Mutex 检查等),就能在并发上完胜。

但 Reddit 上的多位分布式系统工程师指出了一个极易被忽视的“运行时隐形深渊”:非抢占式并发(Cooperative Async)的惩罚。

1. Go 的“无脑并发”(GMP 抢占式调度)

Go 语言底层的 GMP 调度器支持抢占式调度(Preemptive Scheduling)

这意味着,即便 AI 给你写了一段“烂代码”(例如在一个 CPU 密集的循环里没有主动让出 CPU),Go 运行时也会在底层强行打断它,把执行权分给其他协程。你的服务可能会变慢,但绝对不会卡死

2. Rust 的“协作式深渊”(Tokio 异步事件循环)

Rust 的主流异步运行时(如 Tokio)是协作式(Cooperative)的。

这意味着,如果 AI 帮你在一个 async 函数内部偷偷夹带了一句同步阻塞操作(比如调用了一个同步的第三库去读文件或发起网络请求),它会直接霸占并锁死整个事件循环(Event Loop)!

这种低级错误,Rust 那引以为傲的编译器完全无法察觉。在线上高并发场景下,这会导致整个微服务在瞬间陷入死锁状态。

在 AI 辅助开发时代,由于大模型无法完美感知具体的系统上下文,AI 极易在 Rust 的 async 块中引入阻塞调用。这让 Rust 系统的线上隐患比 Go 尖锐得多。

标准库生态 vs 依赖地狱(Crate Hell)

在构建微服务和后端 API 时,Go 的另一个绝对优势是它的 “Batteries included(自带电池)” 哲学。

  • Go 的富标准库:Go 拥有世界上最强大、最稳定的标准库。你不需要引入任何第三方包,仅靠标准库就能写出高性能的 HTTP 服务器、完美的 JSON 解析器以及加密服务。这意味着你的项目极其干净,几乎没有供应链安全风险,并且可以无视版本的向前兼容。
  • Rust 的极简库与 Crate 地狱:为了追求极致的小体积,Rust 的标准库非常“贫瘠”。写一个普通的 Web 服务,你不得不引入 tokio、serde、reqwest 等一整棵庞大的第三方树(类似于 Node.js 的 node_modules 依赖灾难)。

当项目依赖树膨胀到上百个节点时,不仅编译时间(Compile Times)会变得极其冗长(Rust 本就因为编译慢而臭名昭著),AI 也会因为各个第三方库之间复杂的版本冲突,频繁生成无法通过编译的代码,让开发体验陷入泥潭。

黄金法则:90% 的性能,10% 的心智负担

在经历了一轮轮深刻的讨论后,技术老兵们为我们总结出了一条极其务实的决策黄金法则:

除非你的业务是在写操作系统内核、高频交易引擎、或者内存极其受限的边缘设备;否则,用 Go 来换取 10 倍的开发效率、秒级的编译速度,以及任何人都能在 3天内上手的极低维护成本,在商业世界里永远是一个性价比高得多的选择。

小结

AI 的爆发并没有让“简单”失去价值,反而让“简单”变得更加昂贵。

AI 降低了代码“写”的门槛,但也导致互联网上的平庸同质化代码(Slop)呈指数级爆发。在充斥着 AI 生成代码的未来,能够一眼被看穿、能够被任何人轻松评审、能够无痛维护的代码,才是最稀缺的技术资产。

Go 语言那近乎固执的“无聊”与“克制”,并不是落后,而是其对“人机协同软件工程”最深邃的先见之明。

资料链接:https://www.reddit.com/r/golang/comments/1u2u96q/why_choose_go_over_rust_today/


今日开放讨论:

大模型确实降低了我们“落笔写代码”的门槛,但它同时也以前所未有的速度,向整个世界的代码库里倾倒着似是而非的“平庸垃圾(Slop)”。

面对这场温水煮青蛙的“人机协作大潮”,我们也想听听你在一线最真实的工程感受:

  1. 你是否尝试过让 Cursor 或 Claude 帮你生成复杂的 Rust 代码? 在实际编译和后续维护中,你觉得 AI 究竟是帮你“拆掉了门槛”,还是在暗中给你“挖了更深的坑”?
  2. 如果今天你要为团队新立项一个中大型的后端微服务, 在有 AI 编程工具辅助的前提下,你会更倾向于选择“3 天就能上手、编译仅需毫秒的 Go”,还是“心智负担极高、但上限和安全性拉满的 Rust”?
  3. 你是否经历过被 AI 生成的“黑盒代码”在半夜三点叫醒 On-Call 的惨痛经历?

欢迎在评论区留下你最硬核的观点,或者把这篇文章一键转发给身边正在为“技术栈选型”纠结的架构师朋友。我们评论区见!


还在为写 Agent 框架频频死循环、上下文爆炸而束手无策?我的新专栏 从0 开始构建 Agent Harness 将带你:

  • 抛弃臃肿框架,回归“驾驭工程 (Harness Engineering)”的第一性原理
  • 用 Go 语言手写 ReAct 循环、并发拦截与上下文压缩引擎等,复刻极简OpenClaw
  • 构建坚不可摧的 Safety Middleware 与飞书人工审批防线
  • 在底层实现 Token 成本审计、链路追踪与自动化跑分评估
  • 从“调包侠”进化为掌控大模型边界的“AI 操作系统架构师”

扫描下方二维码,开启从 0 开始构建Agent Harness 的实战之旅。


原「Gopher部落」已重装升级为「Go & AI 精进营」知识星球,快来加入星球,开启你的技术跃迁之旅吧!

我们致力于打造一个高品质的 Go 语言深度学习AI 应用探索 平台。在这里,你将获得:

  • 体系化 Go 核心进阶内容: 深入「Go原理课」、「Go进阶课」、「Go避坑课」等独家深度专栏,夯实你的 Go 内功。
  • 前沿 Go+AI 实战赋能: 紧跟时代步伐,学习「Go+AI应用实战」、「Agent开发实战课」、「Agentic软件工程课」、「Claude Code开发工作流实战课」、「OpenClaw实战分享」等,掌握 AI 时代新技能。
  • 星主 Tony Bai 亲自答疑: 遇到难题?星主第一时间为你深度解析,扫清学习障碍。
  • 高活跃 Gopher 交流圈: 与众多优秀 Gopher 分享心得、讨论技术,碰撞思想火花。
  • 独家资源与内容首发: 技术文章、课程更新、精选资源,第一时间触达。

衷心希望「Go & AI 精进营」能成为你学习、进步、交流的港湾。让我们在此相聚,享受技术精进的快乐!欢迎你的加入!

img{512x368}


商务合作方式:撰稿、出书、培训、在线课程、合伙创业、咨询、广告合作。如有需求,请扫描下方公众号二维码,与我私信联系。

Go 生态17年大浪淘沙:2026年最值得引入的10个“神仙级”QoL工具包

本文永久链接 – https://tonybai.com/2026/06/03/10-god-tier-go-qol-libraries-to-use-in-2026

大家好,我是Tony Bai。

在软件工程中,有一个词叫 QoL(Quality of Life,生产体验/开发幸福感)

Go语言(Golang)凭借极简的语法、强悍的并发能力和超快的编译速度,成为了现代后端和云原生的绝对主力。但坦率地说,Go在某些时候的开发体验并不算完美:为了坚持“显式优于隐式”的原则,我们不得不手写大量的样板代码(Boilerplate),甚至在处理路由、数据库迁移、环境配置时,常常感到有些繁琐。

Go诞生至今已经17年。到了2026年的今天,Go生态经历了大浪淘沙般的洗牌。曾经风靡一时的保姆级“全家桶”框架逐渐失宠,取而代之的是“轻量、模块化、对标准库极度友好”的拼图式架构

今天,结合Go开发者社区的共识,我为你整理出2026年最值得引入的10个“神仙级”QoL工具包。它们不改变Go的底层哲学,却能让你的开发体验、代码品味和生产效率产生质的飞跃。

数据库编译器:sqlc(类型安全的终极救星)

  • 解决痛点:传统的 ORM(如 GORM)依赖大量的运行时反射,性能较差,且字段写错只有在运行时才会崩溃;手写 database/sql 又有太多的字符串拼接和样板代码。
  • 神仙之处:sqlc 改变了游戏规则。你只需要写原生 SQL 语句,它就会帮你生成100%类型安全、无反射、编译期排错的干净 Go 代码。
  • 实操场景

首先编写原生的 SQL 语句文件:

-- name: GetUser :o ne
SELECT * FROM users WHERE id = $1 LIMIT 1;

运行 sqlc generate,它会自动为你生成编译期安全的 Go 函数。你直接调用即可,性能等同于手写原生代码,且任何 SQL 语法错误都会在编译阶段被捕获:

user, err := q.GetUser(ctx, userID)

标准库路由增强:chi(优雅的轻量骨架)

  • 解决痛点:很多大框架侵入性太强,自定义了大量的 Context 和 Handler 签名,与标准库 net/http 严重割裂。
  • 神仙之处:chi 100% 兼容 Go 标准库的 http.Handler。它不试图替代标准库,只是在标准库之上优雅地实现了路由分组、路径参数解析和中间件。
  • 实操场景
r := chi.NewRouter()
r.Use(middleware.Logger) // 极简的中间件支持

r.Route("/v1/api", func(r chi.Router) {
    r.Get("/users/{id}", getUserHandler) // 完美的路径参数支持
})

PostgreSQL 黄金搭档:pgx(告别底层的平庸)

  • 解决痛点:标准库的 database/sql 为了通用性,抹平并折损了特定数据库的优秀特性。
  • 神仙之处:如果你在 2026 年使用 PostgreSQL,pgx 是无可争议的行业标准。它不仅速度比通用驱动快数倍,还完美支持 Postgres 特有的二进制协议、批量导入(Copy Protocol)以及复合类型。
  • 实操场景
// 使用 pgx 独有的高效率批量插入,比一条条 INSERT 快一个数量级
rows := [][]any{
    {"John", "Smith"},
    {"Jane", "Doe"},
}
copyCount, err := conn.CopyFrom(
    context.Background(),
    pgx.Identifier{"people"},
    []string{"first_name", "last_name"},
    pgx.CopyFromRows(rows),
)

终极断言利器:testify(让测试回归享受)

  • 解决痛点:Go 官方自带的测试没有提供 Assert 方法,导致断言里充斥着枯燥的 if got != want { t.Errorf(…) }。
  • 神仙之处:testify 是Go测试生态的无冕之王。它提供极其直观、可读性拉满的断言 API,同时完全不改变 go test 的运行机制。
  • 实操场景
import "github.com/stretchr/testify/assert"

func TestCalculate(t *testing.T) {
    res, err := Calculate()
    assert.NoError(t, err)          // 优雅的无错断言
    assert.Equal(t, 42, res)         // 简洁的值断言
}

结构化日志标配:log/slog(官方终结战争)

  • 解决痛点:第三方日志库(Zap, Logrus)割裂了社区,引入它们往往会带来沉重的外部依赖和版本冲突。
  • 神仙之处:Go 内置的 slog 自 1.21 版本起已成为官方推荐的结构化日志方案,大幅降低了引入第三方日志库的必要性。作为标准库,它提供了高性能、标准化的结构化日志输出,完美支持 JSON 格式,直接节省了引入第三方日志库的开销。
  • 实操场景
import "log/slog"

// 输出标准的JSON结构化日志,无缝接入ELK或Loki
slog.Info("payment_processed",
    slog.String("tx_id", "tx_998"),
    slog.Float64("amount", 299.9),
)

云原生配置解析:caarlos0/env(让环境变量回归整洁)

  • 解决痛点:使用 Viper 解析配置过于沉重,配置文件格式(JSON/YAML)在云原生和 Docker 容器部署中往往不如环境变量灵活。
  • 神仙之处:符合“12-Factor App”原则,通过 Struct Tag 极其优雅、轻量地解析环境变量,避免了繁琐的手工类型转换。
  • 实操场景
type ServerConfig struct {
    Port    int      env:"PORT" envDefault:"8080"
    APIKeys []string env:"API_KEYS" envSeparator:","
}

cfg := ServerConfig{}
if err := env.Parse(&cfg); err != nil { // 一步完成类型转换、默认值注入和必填校验
    log.Fatal(err)
}

优雅的 CLI 构造器:alecthomas/kong(告别 Cobra 的臃肿)

  • 解决痛点:Cobra 虽有名,但代码生成量巨大,API 极其复杂,对轻量级 CLI 工具来说显得有些喧宾夺主。
  • 神仙之处kong 采用“声明式”设计,你只需要定义一个 Go 结构体,它就会自动为你生成命令行解析、子命令路由和极其美观的 –help 自动生成。
  • 实操场景
var CLI struct {
    Ping struct {
        Host string help:"Host to ping." required:""
    } cmd:"" help:"Ping a host."
}

ctx := kong.Parse(&CLI)
// 根据子命令自动路由,结构极其清晰

数据库版本控制:pressly/goose(丝滑的数据库迁移)

  • 解决痛点:在团队协作中,数据库 Schema 的变更同步和回滚往往非常混乱。
  • 神仙之处goose 支持用纯 SQL 或 Go 代码编写迁移脚本,完美支持向前/向后(Up/Down)版本控制,能无缝嵌入到 CI/CD 流程中。
  • 实操场景

在终端中简单执行:

# 使用环境变量方式(更简洁)
# 创建一个迁移文件
# 在生成的 sql 文件中写入 DDL,运行 goose up 即可安全升级
GOOSE_DRIVER=postgres GOOSE_DBSTRING="postgres://user:pass@localhost/dbname" \
  goose create add_users_table sql

# 或完整传参方式
goose postgres "postgres://user:pass@localhost/dbname" create add_users_table sql

摆脱 Makefile:go-task/task (Taskfile)(跨平台任务编排)

  • 解决痛点:Makefile 语法晦涩且多平台不兼容,在 Windows 平台上的支持体验较差。
  • 神仙之处task(Taskfile)使用直观的 YAML 语法,跨平台通用,支持任务依赖分析、条件执行和极佳的终端输出。
  • 实操场景

在根目录下编写 Taskfile.yml:

version: '3'
tasks:
  build:
    desc: Build the go binary
    cmds:
      - go build -o myapp main.go
  test:
    desc: Run unit tests
    cmds:
      - go test -v ./...

热重载神器:air-verse/air(让本地开发如丝般顺滑)

  • 解决痛点:每次修改 Go 代码后,都需要手动在终端执行 Ctrl+C 然后重新编译运行,严重打断开发心流。
  • 神仙之处air 监听项目目录的文件变动,在后台自动、极速地重新编译并运行,带给 Go 开发者不亚于前端热更新的实时反馈体验。
  • 实操场景

在项目根目录直接输入:

air

从此放开双手,专注于代码的编写,保存即生效。

2026年Go开发者的“神仙套包”黄金搭配图

小结

Go 生态的发展,是一个从“迷信全家桶大框架”回归到“小而美精细化拼装”的过程。

这 10 个神仙级 QoL 工具包,没有任何一个是试图颠覆 Go 语言设计哲学的。相反,它们都像一块块精密的齿轮,严丝合缝地扣在标准库周围,默默地为你扫清开发路上的琐碎障碍。

用最克制的框架,写最健壮的代码。这,才是 2026 年写 Go 该有的风骨。

资料链接:https://www.reddit.com/r/golang/comments/1tryel9/im_new_to_golang_which_are_the_quality_of_life/


今日开放讨论

  1. 在这 10 个神仙级 QoL 包中,你已经在生产环境使用了哪几个?哪个工具最能提升你的开发“幸福感”?
  2. 在 ORM 选型上,你更青睐传统的 GORM、Ent,还是文中推荐的、编译期安全的 sqlc?为什么?
  3. 你觉得 Go 官方未来应该把今天提到的哪个包(如 testify 的 assert 功能)直接吸送到标准库中?

欢迎在评论区分享你的实战经验与深度见解,让我们一起精进代码品味!


还在为写 Agent 框架频频死循环、上下文爆炸而束手无策?我的新专栏 从0 开始构建 Agent Harness 将带你:

  • 抛弃臃肿框架,回归“驾驭工程 (Harness Engineering)”的第一性原理
  • 用 Go 语言手写 ReAct 循环、并发拦截与上下文压缩引擎等,复刻极简OpenClaw
  • 构建坚不可摧的 Safety Middleware 与飞书人工审批防线
  • 在底层实现 Token 成本审计、链路追踪与自动化跑分评估
  • 从“调包侠”进化为掌控大模型边界的“AI 操作系统架构师”

扫描下方二维码,开启从 0 开始构建Agent Harness 的实战之旅。


原「Gopher部落」已重装升级为「Go & AI 精进营」知识星球,快来加入星球,开启你的技术跃迁之旅吧!

我们致力于打造一个高品质的 Go 语言深度学习AI 应用探索 平台。在这里,你将获得:

  • 体系化 Go 核心进阶内容: 深入「Go原理课」、「Go进阶课」、「Go避坑课」等独家深度专栏,夯实你的 Go 内功。
  • 前沿 Go+AI 实战赋能: 紧跟时代步伐,学习「Go+AI应用实战」、「Agent开发实战课」、「Agentic软件工程课」、「Claude Code开发工作流实战课」、「OpenClaw实战分享」等,掌握 AI 时代新技能。
  • 星主 Tony Bai 亲自答疑: 遇到难题?星主第一时间为你深度解析,扫清学习障碍。
  • 高活跃 Gopher 交流圈: 与众多优秀 Gopher 分享心得、讨论技术,碰撞思想火花。
  • 独家资源与内容首发: 技术文章、课程更新、精选资源,第一时间触达。

衷心希望「Go & AI 精进营」能成为你学习、进步、交流的港湾。让我们在此相聚,享受技术精进的快乐!欢迎你的加入!

img{512x368}


商务合作方式:撰稿、出书、培训、在线课程、合伙创业、咨询、广告合作。如有需求,请扫描下方公众号二维码,与我私信联系。

如发现本站页面被黑,比如:挂载广告、挖矿等恶意代码,请朋友们及时联系我。十分感谢! Go语言第一课 Go语言进阶课 AI原生开发工作流实战 从 0 开始构建 Agent Harness Go语言精进之路1 Go语言精进之路2 Go语言第一课 Go语言编程指南
商务合作请联系bigwhite.cn AT aliyun.com
这里是 Tony Bai的个人Blog,欢迎访问、订阅和留言! 订阅Feed请点击上面图片

如果您觉得这里的文章对您有帮助,请扫描上方二维码进行捐赠 ,加油后的Tony Bai将会为您呈现更多精彩的文章,谢谢!

如果您希望通过微信捐赠,请用微信客户端扫描下方赞赏码:

如果您希望通过比特币或以太币捐赠,可以扫描下方二维码:

比特币:

以太币:

如果您喜欢通过微信浏览本站内容,可以扫描下方二维码,订阅本站官方微信订阅号“iamtonybai”;点击二维码,可直达本人官方微博主页^_^:
本站Powered by Digital Ocean VPS。
选择Digital Ocean VPS主机,即可获得10美元现金充值,可 免费使用两个月哟! 著名主机提供商Linode 10$优惠码:linode10,在 这里注册即可免费获 得。阿里云推荐码: 1WFZ0V立享9折!


View Tony Bai's profile on LinkedIn
DigitalOcean Referral Badge

文章

评论

  • 正在加载...

分类

标签

归档



View My Stats