惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

H
Hackread – Cybersecurity News, Data Breaches, AI and More
C
Check Point Blog
Hacker News: Ask HN
Hacker News: Ask HN
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
WordPress大学
WordPress大学
P
Proofpoint News Feed
V
Visual Studio Blog
C
Cyber Attacks, Cyber Crime and Cyber Security
N
Netflix TechBlog - Medium
C
CXSECURITY Database RSS Feed - CXSecurity.com
博客园 - 聂微东
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
博客园 - 叶小钗
Cisco Talos Blog
Cisco Talos Blog
S
Schneier on Security
T
Threat Research - Cisco Blogs
腾讯CDC
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
The Hacker News
The Hacker News
Google DeepMind News
Google DeepMind News
Microsoft Security Blog
Microsoft Security Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
GbyAI
GbyAI
N
News | PayPal Newsroom
L
LINUX DO - 最新话题
酷 壳 – CoolShell
酷 壳 – CoolShell
P
Palo Alto Networks Blog
T
Tenable Blog
S
Secure Thoughts
T
Threatpost
V2EX - 技术
V2EX - 技术
大猫的无限游戏
大猫的无限游戏
Martin Fowler
Martin Fowler
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Vercel News
Vercel News
罗磊的独立博客
P
Privacy & Cybersecurity Law Blog
Engineering at Meta
Engineering at Meta
小众软件
小众软件
Google DeepMind News
Google DeepMind News
N
News and Events Feed by Topic
Y
Y Combinator Blog
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
C
Cybersecurity and Infrastructure Security Agency CISA
P
Proofpoint News Feed
L
Lohrmann on Cybersecurity
P
Privacy International News Feed
H
Heimdal Security Blog
量子位
B
Blog

Tony Bai

偿还十年技术债:深度拆解 Go 1.27 的 GODEBUG 强力清理计划 浏览器里的“安全阴谋”:为什么 Go 1.27 的 UUIDv7 会离奇丧失随机性? Go 1.27新特性前瞻:泛型方法落地,标准库内建 UUID - Tony Bai AI 正在撕裂研发团队:狂欢的“托管派”与心碎的“守夜人” - Tony Bai 屠榜 CNCF!为什么在云原生时代,Go 语言能把 Java、C++ 和 Rust 堵在门外? 上千程序员自爆 AI 的“卧槽时刻”:是推开神界大门,还是跌入黑盒地狱? - Tony Bai 大模型正在见顶!传奇架构师:欢迎来到“平坦曲线时代” - Tony Bai Anthropic 40万大样本揭秘:AI 时代为什么“专家”身价暴涨? - Tony Bai 在 AI 编码时代,为什么我们依然选择 Go 而不是 Rust? DeepMind 亮出王炸:别再手写 Agent Harness 了,AI 已经学会自己写了! 为什么说“编译通过,就能运行”?Google 专家 Alice 揭秘 Rust 的工程美学与底层逻辑 谷歌 SRE 重磅白皮书:当 AI 自动写出 10 倍代码,谁来阻止系统崩溃? 别再省 Token 了!硅谷新共识:浪费算力才是唯一捷径 - Tony Bai Linux 内核顶级维护者:写了 35 年 C,是 Rust 让我重新找回了编程的乐趣 拒领上亿、封杀 AI:Zig 之父为什么 10 年不发 1.0? 写地道的 Go 语言,是否能让你成为了一个更好的开发者? - Tony Bai RSA 将死?Let’s Encrypt 押注 MTCs 迎战后量子时代 C++ 的权力游戏:一部关于妥协、背叛与重生的“史诗神剧” - Tony Bai 终结十年纠结:Go 新提案允许 Example 支持任意函数签名 - Tony Bai 2026年,大厂重构核心系统为何集体投向 Go? - Tony Bai “辛辛苦苦考上985,却发现AI能替代我90%的工作”:今天的高考,我们还在为什么而战? - Tony Bai 传奇黑客 Geohot 炮轰 AI Agent:这是软件工程史上代价最昂贵的灾难! 别把 Go 写成 Java:毁掉项目从过度架构开始 - Tony Bai 开源维护者的困境 - Tony Bai AI 时代如何真正掌握一门新技术?这份非主流学习指南建议永久收藏 - Tony Bai Go 生态17年大浪淘沙:2026年最值得引入的10个“神仙级”QoL工具包 - Tony Bai 再见样板代码!Go 官方新提案:函数一键转接口 - Tony Bai 写代码快 10 倍,不等于研发快 10 倍!Google 揭秘 AI 系统级瓶颈 Google I/O 2026:Jeff Dean 携 DeepMind 众神宣告,AI Agent 正在终结“标准化软件”时代 AI 优化 1.5ms,手写 0.02ms!Ghostty 作者痛批 AI 编程“平庸陷阱” Redis 之父吐槽现代前端的复杂性:我们到底是在解决问题,还是在制造问题? - Tony Bai 无痛消灭技术债:Google I/O 2026 开启 Go 自动重构时代 省下 10% CPU!Uber 揭秘 Go 栈扩容的隐秘代价 从 Go 迁移到 Rust - Tony Bai 悄悄用 Go 重写 AI 基础设施:NVIDIA 的 GPU 云平台为何选择 Go? Shopify 23,000 名工程师背后的 Claude Code 配置方案(你可以直接复刻的完整配置) Google 开源 AX 与 Agent Substrate:构建以 Agent 为核心的云原生计算底座 十年难题终获突破:揭秘 Go 1.27 接口逃逸分析优化 - Tony Bai 大洗牌!Google 内部确认:Go 正取代 C++,成为 AI Agent 时代的“通用语言” AI 编码胜率榜:Go 与 Rust 完胜 C++ 代码可以让 AI 写,但设计得由你做:重塑工程师的“算法直觉” - Tony Bai 别神话 Rust 重写了:搞定1%热路径,Go 性能照样起飞 - Tony Bai 如何在大型代码库中运用 Claude Code:最佳实践及入门指南 - Tony Bai 写了 10 年 Java/TS,Go 语言终于治好了我的“过度设计”绝症 AI 时代,软件大师们为什么都倒戈向 Go 和 Rust 了? 别再瞎写 go.mod 了!一行 go 1.xx,竟藏着 7 个足以颠覆你认知的“秘密开关” 谁说 Rust 在中国火了?扒开 2025 全年数据,我看到了令人尴尬的真相 “用 Go 打天下,用 Rust 救火”:这才是 2026 年后端架构的唯一正解 对话 Uber 前 CTO:我如何用 5000 个微服务驯服这头失控的巨兽 Anthropic 工程师发文:别用 Markdown 了,HTML 才是 AI 的终极语言! 火爆外网的 Go 开源神器 CLI Printing Press:一键生成 Agent 专属 CLI 工具 Bun 创始人带头“叛逃”:放弃 Zig,用 AI 把项目重写成 Rust? AWS 大神发文炮轰:Go 的并发就是个“笑话”,JVM 的方案要更优越 - Tony Bai “AI 让每个人都成了开发者”,就像“相机让每个人都成了摄影师” - Tony Bai AI 正在把我们推向“双输”深渊:顶级论文揭示“AI 裁员陷阱” - Tony Bai “AI 正在用垃圾代码摧毁一切!”:Flask 之父对话 Pi 作者,揭开 AI 编程的残酷真相 从“Vibe-Coding”到“Agentic Engineering”:Andrej Karpathy 的 AI 时代程序员生存法则 开源社区“内战”爆发:Bun 创始人预言“未来将禁止人类贡献”,硅谷大佬纷纷站队! - Tony Bai Ghostty 之父带头“出走”GitHub!官方 CTO 紧急道歉,并揭秘正在使用 Go 语言救火 Go 1.27 将默认开启 SIMD for amd64,可移植 SIMD 包提案出炉 Go 语言“内战”迎来终局?Go 圣经作者亲自下场,为“三元运算符”发起折中提案! - Tony Bai “我们想用 Rust 重写的次数是:零”:云平台 Render 靠“无聊”的 Go 撑起了千亿流量 对话 Martin Kleppmann:DDIA 第二版揭秘,以及 AI 将如何颠覆分布式系统 为什么人人爱 Rust,但 RedMonk 榜单却给它泼了一盆冷水? - Tony Bai Go 代码设计的“第一天原则”:一份能让你少走五年弯路的实战模式清单 - Tony Bai HashiCorp 创始人亲口“认错”:AI 让我重新爱上了 Go (文末福利) 聊聊为什么我要花这么大精力,带大家手写 Agent Harness? - Tony Bai “我把公司卖了,却感觉一无所有”:OpenClaw 之父 TED 亲述如何靠 AI 重获新生 薄驾驭,厚技能:YC 掌门人揭秘拉开 1000 倍效率差距的 AI 工程化心法 从“开源英雄”到“社区公敌”,Ollama 到底做错了什么? - Tony Bai GPU 计算的起源 - Tony Bai Rust 还没进前十,TIOBE 就开始唱衰了? - Tony Bai 为什么说 go 语句是新时代的 goto?四大法则拯救失控 goroutine C++ 社区内部大讨论:新特性到底是“生产力革命”,还是“叠加的复杂性”? - Tony Bai 别再无脑 go func() 了!Go 资深布道师 Dave Cheney 的 Goroutine 管理哲学 AI 时代,敏捷宣言已死?听听 Martin Fowler 和 Kent Beck 怎么说 Go Command 工作组成立:这几个用了十年的命令可能要被废! - Tony Bai Ruby on Rails 之父最新访谈:AI 正在推高顶尖程序员的身价 别搞“小而美”了!Rust 开发者请愿:求求标准库学学 Go 吧 - Tony Bai 倒计时 33 个月?Go 前安全负责人:量子计算机将“摧毁”互联网 - Tony Bai 从 1960 到 2026:一文看透 Java、Go、Python 垃圾回收器的原理与演进 AI 编程时代,我挖出了一本 1999 年的“删库跑路”指南 - Tony Bai 当AI 榨干了编程所有的乐趣:我不再是程序员,而是“Claude Code”的项目经理 - Tony Bai REST 已老,AI 时代的智能体需要怎样的 API? - Tony Bai 2026 编程语言“饱和度”榜单出炉:JavaScript/Python 已“烂大街”,Go/Rust 成最大赢家? - Tony Bai 一天重写 JSONata,我用 400 美元干掉了公司 50 万美元的 K8s 集群
Robert Griesemer 亲述:只解决 90% 问题的“箭头函数”该长什么样?
bigwhite · 2026-05-06 · via Tony Bai

本文永久链接 – https://tonybai.com/2026/05/06/robert-griesemer-on-go-arrow-functions

大家好,我是Tony Bai。

在 Go 语言的演进史上,很少有一个 Issue 能像 #21498 这样,跨越 9 年时光,累积近千条评论,却依然让官方核心团队如履薄冰。

这个 Issue 的目标很单纯:为 Go 提供一种更简洁的匿名函数语法(Short Function Literals)。或者用大白话说,大家想要一个像 JavaScript 或 Rust 那样的“箭头函数”。

每当一个 Gopher 在代码里写下:

slices.SortFunc(users, func(a, b User) int { return cmp.Compare(a.Age, b.Age) })

他大概率会在心里暗骂一句:“这代码真够笨重的。”

然而,Go 团队对此的回应一直是:“我们不想要魔法,我们只想要清晰。” 这种坚持让社区陷入了长达数年的僵局。

但就在最近,这场僵局似乎正在被化解。

Go 语言之父之一的Robert Griesemer 亲自下场发表了一段重量级评论。他没有给出一个试图满足所有人的复杂方案,而是抛出了一个充满工程智慧的诠释:

“也许试图为任何函数解决这个语法问题是误导性的。我们应该只为那些本来就很短的函数提供支持。”

今天,我们就来看看 Robert 最新诠释中的这个“只解决 90% 问题”的箭头函数,到底长什么样?应该如何用?

底层觉醒:放弃对“全能语法”的执念

Robert Griesemer 的这段话,实际上是对过去 9 年社区争论的一次“终极复盘”。

在这 9 年里,无数天才开发者试图设计出一种“完美”的缩写语法:有的想省掉括号,有的想省掉类型声明,有的甚至想通过 $1, $2 这样的占位符来彻底消灭参数列表。

但这些方案无一例外都让 Go 编译器头疼,更让代码的可读性变得支离破碎。

Robert 意识到,真正的问题不在于匿名函数太长,而在于我们试图让“箭头函数”承载它本不该承载的重量。

如果一个匿名函数里包含了 if 逻辑、for 循环、甚至是一个 switch 分支,那么它本质上就是一个多行逻辑块。对于这种逻辑,写出完整的 func() 语法,带上明确的参数名和结果类型,不仅不是负担,反而是对读者的仁慈。

于是,Robert 划定了一条冷酷的边界线:短函数语法,只服务于单表达式或单语句。

蓝图拆解:Robert 亲自执笔的语法模型

在 Robert 的设想中,Go 的短函数(箭头函数)应该由两个核心部分组成。

第一部分:针对“有返回值”的场景(单表达式)

这是高阶函数(如 Map、Filter、Sort)最常用的场景。Robert 提议采用 (args) -> expr 的符号:

ShortFunctionLit = “(” [ IdentifierList ] “)” “->” ( Expression | “(” ExpressionList “)” ) .

这意味着你可以写出如下的代码:

() -> 42                         // 无参数,返回常数
(x) -> math.Sin(x)               // 单参数,返回计算结果
(x, y) -> x < y                  // 多参数,返回布尔值
(x, y) -> (x + y, x * y)         // 多返回值(需括号包裹)

这里的精髓在于两点:

  1. 彻底消灭 return 关键字:如果右侧是一个表达式,结果会自动返回。
  2. 极简的类型推断:由于它是作为参数传递给某个已知签名的函数(赋值上下文),编译器可以 100% 确定 x 和 y 的类型。你不再需要写 (a int, b int) int 这种啰嗦的废话。

第二部分:针对“无返回值”的场景(单语句)

除了返回值,还有一种场景是“简单回调”:执行一个动作,但不返回结果。

为了严格区分这两种场景,Robert 引入了一个极其精妙的设计:利用大括号 {} 来作为“不返回结果”的视觉信号。

ShortFunctionLit = … | “{” SimpleStmt “}” ) .

例子如下:

() -> { /* do nothing */ }
(x) -> { fmt.Printf("log: %v\n", x) } // 执行打印,无返回
(x) -> { ch <- x }                    // 往通道发数据,无返回
(p) -> { (*p)++ }                     // 修改指针值,无返回

Robert 的设计逻辑非常清晰:

  • 没有 {}:必须返回一个值(表达式)。
  • 有 {}:必须不返回值(语句)。

这个视觉区分,让任何一个读者在扫过代码的一瞬间,就能理解这个匿名函数的副作用。

架构师的必修课:为什么“只解决 90%”才是最佳答案?

Robert 在评论中提到:

“这能解决 90% 的常见案例,就像短变量声明(:=)一样。”

这正是这篇文章最值得我们升维思考的地方。

一个平庸的语言设计者,会试图通过复杂的规则去覆盖 100% 的场景,最终让语言变得像 C++ 一样臃肿。而一个顶级的语言设计者(如 Robert),懂得利用“帕累托法则(二八定律)”

:= 并不完美,它在某些特定的作用域重叠情况下会引发困惑。但它解决了 90% 的声明问题,让 Go 代码变得极其清爽。

同样,Robert 提出的这个“箭头函数”蓝图:

  • 它不能写多行逻辑? 没关系,剩下的 10% 复杂场景,写 func() 更有助于维护。
  • 它不能省掉参数括号? 没关系,强制带上 () 可以避免解析歧义,保持 Go 一贯的“明确”风格。

*这种“克制”的艺术,正是 Go 语言在云原生时代能够取得成功的重要原因之一。** 它不追求在每一行代码上都胜过别人,它追求的是在大规模协作、在百万行代码库的维护上,保持最低的认知负荷。

未来的模样:现代化的代码重构

Robert 在文章末尾甚至已经想好了如何推广这个特性:

“如果我们引入了这个短格式,我们可以一键使用现代工具(modernizer)将现有的所有旧代码重写。”

想象一下,当你把你的项目升级到未来的 Go 版本,运行一下格式化命令。原本满屏的:

users.Map(func(u User) string {
    return u.Name
})

会瞬间收缩为:

users.Map((u) -> u.Name)

这既是字符的缩减,更是一场视觉的解放。

小结:在万变中,寻找最地道的“Go 味儿”

看完 Robert Griesemer 的这份亲述,你是否感受到了一种跨越时空的工程美学?

箭头函数在其他语言里早就不是新闻了。但 Go 团队为了把它设计得“更地道、更不容易出错、更符合长期维护利益”,足足纠结了 9 年。

这种对语法的敬畏,才是我们作为开发者真正应该学习的财富。最好的技术方案,往往不是那个功能最全的,而是那个能以最小的代价,解决最普遍痛点的。

只解决 90% 的问题,剩下的 10% 留给严谨与克制。

这,就是 Go 语言的“中庸之道”,也是它最强大的地方。


今日互动探讨:

你认同 Robert 这种“只做单行缩写”的底线吗?你觉得在 Go 中加入 -> 符号,会破坏它原有的朴素感吗?

欢迎在评论区分享你的深度见解!


还在为写 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}


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

© 2026, bigwhite. 版权所有.

Related posts:

  1. Go 语言“内战”迎来终局?Go 圣经作者亲自下场,为“三元运算符”发起折中提案!
  2. Rust 看了流泪,AI 看了沉默:扒开 Go 泛型最让你抓狂的“残疾”类型推断
  3. Go 语言之父亲自下场道歉:藏在 Spec 里的十年“笔误”,终于要修正了!
  4. Go 考古:图灵奖得主 Ken Thompson 亲述,Go 语言是如何在 C++ 的“废墟”上诞生的
  5. 沉睡 8 年的提案被唤醒:Go 语言真的要引入“不可变类型”了吗?