Go errors.Join:是“天赐之物”还是“潘多拉魔盒”?——深入错误聚合的适用场景与最佳实践

本文永久链接 – https://tonybai.com/2025/06/20/about-errors-join 大家好,我是Tony Bai。 错误处理,无疑是软件开发中永恒的核心议题之一。Go 语言以其独特的、显式的错误处理机制(即 error 作为普通值返回)而著称,这种设计强调了对错误的关注和及时处理。自 Go 1.13 引入错误包装 (wrapping) 机制以来,Go 的错误处理能力得到了显著增强。而在Go 1.20 版本中,标准库 errors 包更是带来了一个备受关注的新成员:errors.Join() 函数。 ...

June 20, 2025 · 14 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 1.20中值得关注的几个变化

本文永久链接 – https://tonybai.com/2023/02/08/some-changes-in-go-1-20 美国时间2023年2月1日,唯一尚未退休的Go语言之父Robert Griesemer代表Go核心开发团队在Go官博撰文正式发布了Go 1.20版本。就像Russ Cox在2022 GopherCon大会所说的那样:Go2永不会到来,Go 1.x.y将无限延续! ...

February 8, 2023 · 18 min · Tony Bai

Go 1.20新特性前瞻

本文永久链接 – https://tonybai.com/2022/11/17/go-1-20-foresight 在近期Russ Cox代表Go核心团队发表的“Go, 13周年”一文中,他提到了“在Go的第14个年头,Go团队将继续努力使Go成为用于大规模软件工程的最好的环境,将特别关注供应链安全,提高兼容性和结构化日志记录,当然还会有很多其他改进,包括profile-guided optimization等”。 ...

November 17, 2022 · 11 min · Tony Bai