Go 泛型落地 4 年后,终于要支持泛型方法了!

本文永久链接 – 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) 的支持。 ...

January 24, 2026 · 7 min · Tony Bai

从“源码审计”到“能力审计”:Go 生态应对供应链攻击的范式转移

本文永久链接 – https://tonybai.com/2026/01/02/go-supply-chain-attack-source-code-to-capability-auditing-paradigm-shift 大家好,我是Tony Bai。 在软件供应链安全的传统认知中,我们默认遵循一个假设:“代码即真理”。如果你审查了 GitHub 上的源码,确认它是安全的,那么你部署的服务就应该是安全的。 然而,2025 年初在 Go 生态中爆发的 BoltDB 投毒事件,以及之前的 XZ 后门事件,无情地粉碎了这个假设。攻击者正在利用构建系统的复杂性和 Git 标签的可变性,在“源码”与“构建产物”之间制造出一片致命的盲区。 ...

January 2, 2026 · 7 min · Tony Bai

Go 1.26 新特性前瞻:从 Green Tea GC 到语法糖 new(expr),性能与体验的双重进化

本文永久链接 – https://tonybai.com/2025/12/16/go-1-26-foresight 大家好,我是Tony Bai。 随着2025年11月末 Go 1.26 开发分支的功能冻结(Feature Freeze),这份预计于 2026 年初发布的版本终于揭开了神秘面纱。 ...

December 16, 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

“可移植性”的隐藏成本:Go为何要重塑maphash并划定新的运行时边界?

本文永久链接 – https://tonybai.com/2025/09/23/go-maphash-portability-costs-and-runtime-boundaries 大家好,我是Tony Bai。 对于大多数Go开发者来说,标准库似乎是一个浑然天成的整体。我们理所当然地使用着fmt、net/http和encoding/json,很少去思考它们内部的依赖关系和架构边界。然而,在标准库光鲜的外表之下,一场关于其核心架构的深刻变革正在悄然发生,而hash/maphash这个看似不起眼的包,正处在这场变革的风暴中心。 ...

September 23, 2025 · 6 min · Tony Bai

告别字符串魔法:Go 迎来类型化 Struct Tag 提案,编译期安全触手可及?

本文永久链接 – https://tonybai.com/2025/07/08/typed-struct-tags 大家好,我是Tony Bai。 Go 语言的结构体标签(Struct Tag)自诞生以来,一直是其强大反射能力的重要组成部分,广泛应用于 encoding/json、ORM、配置管理等领域。然而,它也一直是一个“美丽的缺憾”:这些标签本质上是无类型的字符串,依赖于各种“微语言”和“纳米语言”的脆弱约定,缺乏编译期检查,容易因拼写错误或格式问题导致运行时bug。现在,一个旨在彻底改变这一现状的重量级提案——#74472: Typed struct tags——正式进入了社区视野。该提案由 @Merovius 提出,建议在现有字符串标签之外,引入类型化的、编译期检查的结构体标签,一旦落地(虽然短期内不大可能,甚至可能被declined)有望将 Go 的静态类型安全优势延伸至元数据定义领域。在这篇文章中,我们就来简单解读一下这份提案。 ...

July 8, 2025 · 6 min · Tony Bai

Go语言中的深拷贝:概念、实现与局限

本文永久链接 – https://tonybai.com/2024/09/28/understand-deep-copy-in-go 前不久,在“Gopher部落”知识星球上回答了一个Gopher关于深拷贝(Deep Copy)的问题,让我感觉是时候探讨一下深拷贝技术了。 在日常开发工作中,深拷贝的使用频率相对较低,可能有80%的时间不需要使用深拷贝,只有在特定情况下才会遇到。这主要是因为大多数开发中处理的对象比较简单,通常只需使用浅拷贝(Shallow Copy)就能满足需求;此外,多数时候我们需要共享状态或数据,使用浅拷贝可以方便多个部分访问同一数据;最后,深拷贝通常比浅拷贝耗时更多,尤其是当对象嵌套较深时。因此,开发者倾向于选择更高效的浅拷贝。 ...

September 28, 2024 · 17 min · Tony Bai

Go未用代码消除与可执行文件瘦身

本文永久链接 – https://tonybai.com/2024/05/05/dead-code-elimination-and-executable-file-slimming-in-go 在日常编写Go代码时,我们会编写很多包,也会在编写的包中引入了各种依赖包。在大型Go工程中,这些直接依赖和间接依赖的包数目可能会有几十个甚至上百个。依赖包有大有小,但通常我们不会使用到依赖包中的所有导出函数或类型方法。 ...

May 5, 2024 · 8 min · Tony Bai

Service Weaver:以单体形式编码,以微服务形式部署

本文永久链接 – https://tonybai.com/2023/10/09/service-weaver-coding-in-monolithic-deploy-in-microservices 分布式应用的主流架构模式演化为微服务架构已经有些年头了。微服务、DevOps、持续交付和容器技术(k8s)是构成最初云原生概念的核心要素。它们相生相拌,共同演进,并推动了云计算全面进入云原生时代。 云原生应用普遍采用微服务架构,遗留的单体应用程序会逐步演进并拆分为多个微服务,新应用则会直接采用微服务架构进行设计与实现。微服务的好处是显而易见的: ...

October 9, 2023 · 24 min · Tony Bai

使用testify包辅助Go测试指南

本文永久链接 – https://tonybai.com/2023/07/16/the-guide-of-go-testing-with-testify-package 我虽然算不上Go标准库的“清教徒”,但在测试方面还多是基于标准库testing包以及go test框架的,除了需要mock的时候,基本上没有用过第三方的Go测试框架。我在《Go语言精进之路》一书中对Go测试组织的讲解也是基于Go testing包和go test框架的。 ...

July 16, 2023 · 15 min · Tony Bai