Go 考古:错误处理的“语法糖”之战与最终的“投降”
本文永久链接 – https://tonybai.com/2025/10/28/go-archaeology-error-handling 大家好,我是Tony Bai。 if err != nil,这可能是 Go 语言中最具辨识度,也最富争议性的代码片段。它如同一块磐石,奠定了 Go 错误处理哲学的基石,但也因其“繁琐”而常年位居 Go 开发者年度调查“最不满意特性”榜首。 ...
本文永久链接 – https://tonybai.com/2025/10/28/go-archaeology-error-handling 大家好,我是Tony Bai。 if err != nil,这可能是 Go 语言中最具辨识度,也最富争议性的代码片段。它如同一块磐石,奠定了 Go 错误处理哲学的基石,但也因其“繁琐”而常年位居 Go 开发者年度调查“最不满意特性”榜首。 ...
本文永久链接 – https://tonybai.com/2025/10/22/back-to-go-after-defection-to-java 大家好,我是Tony Bai。 “我离开了 Go,因为我觉得它啰嗦又笨重。我以为编程本该是简单轻松的……但事实证明,河对岸的草不见得更绿。” 近日,在 r/golang 社区,一篇标题为《一篇完全没有建设性但又无比真实的,关于 Go 和 Java 的咆哮》的帖子引发了热议。作者讲述了一个“Gopher 叛逆-回归”的经典故事:因不满 Go 社区对 ORM 和 DI 框架的“抵触”,以及 Go 语言本身的“繁琐”,他转投了企业级 Java 的怀抱。然而,在亲身体验了 Java 生态中无处不在的“魔法”之后,他如今“无比怀念 Golang”。 ...
本文永久链接 – https://tonybai.com/2025/10/21/10-go-programming-rules-from-reddit 大家好,我是Tony Bai。 在团队协作中,Code Review是我们与同事交流最频繁的阵地。我们都渴望自己提交的代码能够清晰、健壮,赢得同事的“LGTM”(Looks Good To Me)。但有时,一些看似“吹毛求疵”的风格评论,如“改下变量名”或“这里缩进不对”,会让我们感到困惑。 ...
为什么 Flask 的创造者选择 Go 作为他 AI 创业公司的核心语言? - Tony Bai Tony Bai 一个程序员的心路历程 Google Go语言编码风格规范 Google Go语言编码风格规范:指南篇 Google Go语言编码风格规范:决定篇 Google Go语言编码风格规范:最佳实践篇 Go语言第一课FAQ ...
本文永久链接 – https://tonybai.com/2025/10/09/json-isnt-json 大家好,我是Tony Bai。 JSON (JavaScript Object Notation),以其简洁、轻量、人类可读的特性,早已成为 Web API 和系统集成的“通用语”。它的承诺是:“一次编写,随处解析”。然而,这份看似美好的承诺背后,隐藏着一个被许多开发者忽略的残酷现实:JSON 并不像其规范所暗示的那样通用。 ...
本文永久链接 – https://tonybai.com/2025/10/07/proposal-must-do 大家好,我是Tony Bai。 if err != nil 不仅是 Go 代码中最常见的片段,更是其错误处理哲学的基石。它强制开发者在每一个可能出错的地方,都必须直面失败的可能性。然而,当一个错误在理论上可能发生,但在实践中(尤其是在处理静态、已知的常量时)又“不可能”发生时,这种严谨性是否就变成了一种冗余的样板代码? 这种在便利性与哲学纯粹性之间的张力并非新生事物。Go 标准库自身,就在特定场景下为我们提供了“捷径”。例如,text/template 包就提供了一个 Must 函数: ...
本文永久链接 – https://tonybai.com/2025/09/12/go-constructor-pattern-guide 大家好,我是Tony Bai。 Go 语言的设计哲学崇尚简约与直白(straightforward)。其中,结构体字面量 (Struct Literal) 的存在,让我们可以用极其简单的方式创建数据结构。然而,在构建大型、复杂的系统时,这种简单性也可能成为一把双刃剑。当一个对象的创建需要满足特定前置条件、执行复杂初始化或强制执行业务规则时,我们便需要一个更强大、更可控的工具。 ...
本文永久链接 – https://tonybai.com/2025/09/09/the-power-of-ten-in-go 大家好,我是Tony Bai。 在软件工程领域,有些智慧是永恒的。 2006 年,NASA/JPL(喷气推进实验室)的 Gerard J. Holzmann 公布了其团队用于开发安全关键 (Safety-Critical) 软件的十条黄金法则——“The Power of Ten: Rules for Developing Safety-Critical Code”。这些规则诞生于 C 语言主导的嵌入式世界,旨在为火星车、深空探测器等“不容有失”的系统构建坚不可摧的代码基石。 ...
本文永久链接 – https://tonybai.com/2025/08/28/go-primer-published 大家好,我是Tony Bai。 前不久,在知乎上看到一个关于 Go 社区的帖子,其中一条评论让我感慨良多: “GopherChina 都没了,国内还有几人坚持?Tony Bai好像还在更新” ...
本文永久链接 – https://tonybai.com/2025/08/23/proposal-errors-asa 大家好,我是Tony Bai。 自 Go 1.13 引入 errors.Is 和 errors.As 以来,Go 语言的错误处理进入了一个结构化、可追溯的新时代。然而,errors.As 的使用方式,对于追求代码简洁与优雅的 Gopher 而言,始终存在一丝“不和谐”:开发者必须预先声明一个目标错误类型的变量,然后将其指针传入函数。 ...