从 Go 迁移到 Rust
本文永久链接 – https://tonybai.com/2026/05/27/migrate-go-to-rust 大家好,我是Tony Bai。 在现代后端系统编程领域,Go 和 Rust 无疑是最耀眼的两大双子星。它们都拥有静态类型、编译型、单二进制文件分发等优异特性。然而,这两门语言在底层的设计哲学、运行时权衡以及开发者体验上,走向了截然不同的方向。 ...
本文永久链接 – https://tonybai.com/2026/05/27/migrate-go-to-rust 大家好,我是Tony Bai。 在现代后端系统编程领域,Go 和 Rust 无疑是最耀眼的两大双子星。它们都拥有静态类型、编译型、单二进制文件分发等优异特性。然而,这两门语言在底层的设计哲学、运行时权衡以及开发者体验上,走向了截然不同的方向。 ...
本文永久链接 – https://tonybai.com/2026/03/16/go-language-eliminated-undefined-behavior-truth-investigation 大家好,我是Tony Bai。 在系统编程的古老传说中,流传着一个关于“鼻恶魔”(Nasal Demons)的笑话。 这个梗源自 comp.std.c 新闻组,它是对 C/C++ 语言中“未定义行为”(Undefined Behavior,以下简称 UB)最生动也最恐怖的诠释。根据 ISO C++ 标准,如果你的代码触犯了 UB(例如数组越界、有符号整数溢出、空指针解引用),编译器可以“为所欲为”。 ...
本文永久链接 – https://tonybai.com/2026/01/24/go-generics-finally-supports-generic-methods 大家好,我是Tony Bai。 “我们预计 Go 永远不会添加泛型方法。” —— Go FAQ (曾几何时) 对于许多期待 Go 泛型能像 C++ 或 Java 那样强大的开发者来说,这句话曾像一盆冷水。然而,就在最近,Go 语言之父之一、核心团队成员 Robert Griesemer 提交了一份重量级提案 #77273,正式建议为 Go 添加泛型方法 (Generic Methods) 的支持。 ...
本文永久链接 – https://tonybai.com/2026/01/16/go-community-the-right-kind-of-abstraction 大家好,我是Tony Bai。 “Go 的哲学强调避免不必要的抽象。” 这句话我们听过无数次。当你试图引入 ORM、泛型 Map/Reduce 、接口或者复杂的设计模式时,往往会收到这样的反馈。这句话本身没有错,但难点在于:到底什么是“不必要”的? ...
本文永久链接 – https://tonybai.com/2026/01/14/go-explicit-philosophy-implicit-interfaces-design-wisdom 大家好,我是Tony Bai。 “Go 倾向于显式、冗长的代码,而不是‘魔法’。那么,为什么接口实现却是隐式的呢?这让理解代码变得困难多了,简直让我抓狂。” ...
本文永久链接 – https://tonybai.com/2026/01/04/stop-lying-to-the-compiler 大家好,我是Tony Bai。 “半夜被值班的运维同事叫醒,发现生产环境崩了,原因是一个深藏在业务逻辑里的 nil 指针异常。” 这个场景,对于每个后端开发者来说都是挥之不去的噩梦。事后复盘时,我们往往会懊恼:“为什么这里没加 if != nil 判断?”然后,我们在代码里撒上一把防御性检查的“盐”,祈祷下次好运。 ...
本文永久链接 – https://tonybai.com/2025/12/29/go-community-new-sum-type-end-interface-union-types 大家好,我是Tony Bai。 “Go 什么时候支持枚举?” “Go 什么时候有真正的联合类型?” 这可能是 Go 语言诞生以来,被问得最多的问题之一。现有的解决方案——无论是用 const 模拟枚举,还是用 interface{} 配合类型断言模拟联合类型——在类型安全、表达力和穷尽性检查上,都总让人感觉“差了那么一点意思”。 ...
本文永久链接 – https://tonybai.com/2025/12/26/think-like-go-founders-relearn-go-five-principles 大家好,我是Tony Bai。 学习一门新的编程语言时,我们常常陷入“是什么”的迷雾:goroutine 是什么?channel 是什么?interface 是什么?我们记忆语法,模仿示例,却很少追问那个更根本的问题——“为什么”? ...
本文永久链接 – https://tonybai.com/2025/12/24/bash-vs-go-10x-code-100x-maintainability 大家好,我是Tony Bai。 “Bash 是一种很棒的胶水语言,但 Go 是更好的胶水。” 在日常开发中,我们经常会写一些 Bash 脚本来处理本地环境配置、启动 Docker 容器、同步密钥等琐碎任务。起初,它们只是几行简单的命令;但随着时间推移,它们逐渐膨胀成包含数百行 jq、sed、awk 的怪物,充斥着针对 macOS 和 Linux 的条件分支,以及“千万别动这行代码”的注释。 ...
本文永久链接 – https://tonybai.com/2025/12/15/go-language-anti-patterns-10-donts 大家好,我是Tony Bai。 “有哪些‘不要做’的教训,是你花了好几年才学会的?” 近日,在 r/golang 社区,这个简单的问题,引爆了一场关于 Go 语言“反模式”与“最佳实践”的集体反思。帖子下数百条评论,汇集了无数 Gopher 在真实项目中用“血与泪”换来的宝贵经验。这些教训,往往不是关于某个高深的算法,而是关于那些看似“理所当然”,却在不经意间为代码埋下地雷的日常习惯。 ...