Go 的“浮点数陷阱”将被填平:浮点转整数即将在所有平台上行为一致

本文永久链接 – https://tonybai.com/2026/01/11/proposal-float-to-int-conversions-should-saturate-on-overflow 大家好,我是Tony Bai。 你是否知道,同一行简单的代码 int64(myFloat),在 Intel (amd64) 机器上可能返回一个巨大的负数,而在 ARM64 机器上却可能返回最大正整数? ...

January 11, 2026 · 5 min · Tony Bai

Go 的“简单”幻象:易于上手,难于精通

本文永久链接 – https://tonybai.com/2025/11/07/go-simple-illusion-easy-to-learn-hard-to-master 大家好,我是Tony Bai。 “Go 语言看起来如此简单,我的这种假设是错的吗?” 近日,一位刚接触 Go 几个月的新手在reddit golang论坛发出了这样一个真诚的提问。他感觉 Go “超级简单”,并好奇自己是否因为初学者的身份,而忽略了语言中那些“疯狂的复杂性”。 ...

November 7, 2025 · 7 min · Tony Bai

Go 考古:错误处理的“语法糖”之战与最终的“投降”

本文永久链接 – https://tonybai.com/2025/10/28/go-archaeology-error-handling 大家好,我是Tony Bai。 if err != nil,这可能是 Go 语言中最具辨识度,也最富争议性的代码片段。它如同一块磐石,奠定了 Go 错误处理哲学的基石,但也因其“繁琐”而常年位居 Go 开发者年度调查“最不满意特性”榜首。 ...

October 28, 2025 · 9 min · Tony Bai

“错误即值”,不同实现:Go与Zig错误处理哲学对比

本文永久链接 – https://tonybai.com/2025/04/30/go-vs-zig-in-error-handling 大家好,我是Tony Bai。 使用Go语言有些年头的开发者,大多对其错误处理机制有着复杂的情感。一方面,我们认同 Rob Pike 所倡导的“错误即值 (Errors are values)”的核心哲学——错误不是需要特殊通道(如异常)处理的“二等公民”,它们是普通的值,可以传递、检查,甚至被编程。这赋予了错误处理极大的灵活性和明确性。 ...

April 30, 2025 · 8 min · Tony Bai

Go语言之禅

本文翻译自Go社区知名Gopher和博主Dave Cheney的文章《The Zen of Go》。 本文来自我在GopherCon Israel 2020上的演讲。文章很长:) 如果您希望阅读精简版,请移步到the-zen-of-go.netlify.com。 该演讲视频还未上线。如上线,我会把它更新到本文中的。 ...

February 24, 2020 · 23 min · Tony Bai

记一次go panic问题的解决过程

一. Panic问题概述 本周收到客户在bugclose上填写的一个issue:添加一个下发通道后,pushd程序panic并退出了!程序panic时输出的stacktrace信息摘录如下: ...

April 4, 2019 · 7 min · Tony Bai

代码评审·CC2e·断言·其它

一口气读了七章"Code Complete 2nd(以下称CC2e)“中的内容,从第七章的"高质量的子程序"到第十三章的"不常见的数据类型”。之所以一口气读这么多,是因为被其中的内容吸引了。这两天的下午一直在做代码评审,所以晚上看CC2e的时候,思维不停的在项目代码和书中内容之间跳转。一直把"代码大全2nd"当作一门百科全书式的手册类图书,买回来后一直陈放在书架上没有问津。直到今天在考虑一个关于断言使用的问题时,才想起来去查查这本百科全书,想看看书中是如何阐述断言的。于是便拿起了这本书。 ...

November 13, 2008 · 5 min · Tony Bai

面对'错误'的抉择

大凡写程序者,都会遇到错误; 大凡写程序者也都知道两种错误处理的机制:传统的’错误码返回机制’和’面向对象语言引入的异常处理机制’。 ...

November 13, 2007 · 4 min · Tony Bai