Web Analytics

Go开发者必读:JSON 的跨语言陷阱与 Go 防御指南

本文永久链接 – https://tonybai.com/2025/10/09/json-isnt-json 大家好,我是Tony Bai。 JSON (JavaScript Object Notation),以其简洁、轻量、人类可读的特性,早已成为 Web API 和系统集成的“通用语”。它的承诺是:“一次编写,随处解析”。然而,这份看似美好的承诺背后,隐藏着一个被许多开发者忽略的残酷现实:JSON 并不像其规范所暗示的那样通用。 ...

October 9, 2025 · 15 min · Tony Bai

只会 net/http 还不够,Go 网络编程的“深水区”你敢闯吗?

只会 net/http 还不够,Go 网络编程的“深水区”你敢闯吗? - Tony Bai Tony Bai 一个程序员的心路历程 Google Go语言编码风格规范 Google Go语言编码风格规范:指南篇 Google Go语言编码风格规范:决定篇 Google Go语言编码风格规范:最佳实践篇 Go语言第一课FAQ ...

October 8, 2025 · 5 min · Tony Bai

Go 标准库提供一个“Must” 函数?社区关于“断言式初始化”的思考

本文永久链接 – https://tonybai.com/2025/10/07/proposal-must-do 大家好,我是Tony Bai。 if err != nil 不仅是 Go 代码中最常见的片段,更是其错误处理哲学的基石。它强制开发者在每一个可能出错的地方,都必须直面失败的可能性。然而,当一个错误在理论上可能发生,但在实践中(尤其是在处理静态、已知的常量时)又“不可能”发生时,这种严谨性是否就变成了一种冗余的样板代码? 这种在便利性与哲学纯粹性之间的张力并非新生事物。Go 标准库自身,就在特定场景下为我们提供了“捷径”。例如,text/template 包就提供了一个 Must 函数: ...

October 7, 2025 · 6 min · Tony Bai

超越时间的智慧:重读那些定义了现代软件开发的经典文章

本文永久链接 – https://tonybai.com/2025/10/04/the-software-essays-that-shaped-me 大家好,我是Tony Bai。 二十年前,一位年轻的程序员在还未踏入职场时,便开始沉浸于软件开发的博客文章与深刻思考之中。二十年后,他已成为一名资深工程师,回首望去,成千上万的文字中,只有寥寥数篇真正沉淀下来,如基石般塑造了他的思维方式和职业生涯。 ...

October 4, 2025 · 12 min · Tony Bai

Go 考古:Slice 的“隐秘角落”——只读切片与扩容策略的权衡

本文永久链接 – https://tonybai.com/2025/10/02/go-archaeology-slice 大家好,我是Tony Bai。 slice(切片),可以说是 Go 语言中最重要、也最常用的数据结构,没有之一。我们每天都在使用它,尤其是 append 函数,它就像一个魔术师,总能“恰到好处”地为我们管理好底层数组的容量,让我们几乎感受不到内存分配的烦恼。 ...

October 2, 2025 · 12 min · Tony Bai

除了技术能力,什么决定了软件工程师的上限?答案是“品味”

本文永久链接 – https://tonybai.com/2025/09/30/good-taste-in-software-engineering 大家好,我是Tony Bai。 在软件工程领域,我们习惯于用“技术能力”(Technical Skill)来衡量一位工程师的优劣。他是否精通并发模型?能否写出高性能的代码?对底层原理的理解有多深?这些能力可以通过学习和重复练习来获得,是我们评价体系中的“硬通货”。 ...

September 30, 2025 · 7 min · Tony Bai

并发测试神器 synctest的“成人礼”:从goroutine泄漏到微妙的竞态,Go团队如何修复三大“首日bug”?

本文永久链接 – https://tonybai.com/2025/09/29/synctest-bugs-in-go-1-25 大家好,我是Tony Bai。 Go 1.25的发布,为我们带来了一个期待已久的“并发测试神器”—— testing/synctest。这个在Go 1.24中作为实验性功能首次亮相的包,承诺将我们从time.Sleep、channel和各种脆弱的同步技巧中解放出来,让我们能够编写出快速、可靠、确定性的并发测试。 ...

September 29, 2025 · 8 min · Tony Bai

Dropbox最新研究解读:AI 正在拉平生产力差距,顶尖开发者如何脱颖而出?

本文永久链接 – https://tonybai.com/2025/09/28/how-top-performers-stand-out-in-the-age-of-ai 大家好,我是Tony Bai。 AI 正在以前所未有的速度重塑软件开发领域。从代码生成到信息检索,AI 工具无疑极大地提升了工程师的生产力。一个普遍的假设是,谁能更好地利用 AI,谁就能成为新时代的顶尖人才。然而,Dropbox 最近发布的一项内部研究,却对这个看似理所当然的结论提出了一个深刻的挑战。 ...

September 28, 2025 · 6 min · Tony Bai

Go 结构体初始化的“反直觉”设计终于要改了?深入探讨嵌入字段直接初始化提案

本文永久链接 – https://tonybai.com/2025/09/27/direct-ref-to-embedded-fields-in-struct-literals 大家好,我是Tony Bai。 在 Go 语言中,结构体嵌入 (Embedding) 是一个强大而独特的特性,它为我们提供了一种优雅的“垂直组合”方式。然而,多年来,它的使用体验中一直存在一个广为人知的“反直觉”之处,一个让无数开发者(包括 Go 核心团队成员自己)都曾踩过的坑。 近日,一个旨在解决此问题的、长达十年的“陈年”提案(#9859)被重新激活并进入了活跃评审阶段(active)。这预示着 Go 结构体字面值的使用方式,可能即将迎来一次意义深远的简化。在本文中,我就和大家一起对该提案做一下解读,看看新提案究竟解决了什么问题,一旦落地后,究竟会给Go开发者带来哪些好处。 ...

September 27, 2025 · 6 min · Tony Bai

“自立程序员宣言”解读:这不就是我们一直在说的Go语言哲学吗?

“自立程序员宣言”解读:这不就是我们一直在说的Go语言哲学吗? - Tony Bai Tony Bai 一个程序员的心路历程 Google Go语言编码风格规范 Google Go语言编码风格规范:指南篇 Google Go语言编码风格规范:决定篇 Google Go语言编码风格规范:最佳实践篇 Go语言第一课FAQ ...

September 26, 2025 · 6 min · Tony Bai