十年难题终获突破:揭秘 Go 1.27 接口逃逸分析优化

本文永久链接 – https://tonybai.com/2026/05/22/go-1-27-interface-escape-analysis-optimization-breakthrough 大家好,我是Tony Bai。 在日常的 Go 语言开发中,有这样一段极其普通、普通到闭着眼睛都能敲出来的代码: val := 1000 fmt.Sprintf("Result: %d", val) 如果我告诉你,这短短两行代码,就是导致你高并发服务 CPU 飙升、GC(垃圾回收)频繁卡顿的元凶之一,你会不会觉得我在危言耸听? ...

May 22, 2026 · 8 min · Tony Bai

Go 语言的“魔法”时刻:如何用 -toolexec 实现零侵入式自动插桩?

本文永久链接 – https://tonybai.com/2026/01/19/unleashing-the-go-toolchain 大家好,我是Tony Bai。 “Go 语言以简洁著称,但在可观测性(Observability)领域,这种简洁有时却是一种负担。手动埋点、繁琐的初始化代码、版本升级带来的破坏性变更……这些都让 Gopher 们痛苦不已。 ...

January 19, 2026 · 8 min · Tony Bai

dingo:Go 语言的 “TypeScript”时刻?—— 一场由社区驱动的语言演进实验

本文永久链接 – https://tonybai.com/2025/11/27/dingo-go-typescript-moment 大家好,我是Tony Bai。 Go 语言自诞生以来,以其极简主义哲学(Simplicity)赢得了全球开发者的青睐。然而,这种极简也伴随着长期的痛点: ...

November 27, 2025 · 7 min · Tony Bai

通过实例理解Go内联优化

本文永久链接 – https://tonybai.com/2022/10/17/understand-go-inlining-optimisations-by-example 移动互联网时代,直面C端用户的业务系统规模一般都很庞大,系统消耗的机器资源也很可观,系统使用的CPU核数、内存都是在消耗公司的真金白银。在服务水平不下降的前提下尽量降低单服务实例的资源消耗,即我们俗称的“少吃草多产奶”,一直是各个公司经营人员的目标,有些公司每降低1%的CPU核数使用,每年都能节省几十万的开销。 ...

October 17, 2022 · 16 min · Tony Bai

手把手教你使用ANTLR和Go实现一门DSL语言(第一部分):设计DSL语法与文法

本文永久链接 – https://tonybai.com/2022/05/24/an-example-of-implement-dsl-using-antlr-and-go-part1 在《使用ANTLR和Go实现DSL入门》一文中,我们了解了DSL与通用编程语言(GPL)的差异、DSL解析器生成工具选择以及ANTLR文法的简要书写规则,并和大家一起完成了一个CSV解析器的例子。看完上述文章后,你是不是有了打造属于自己的DSL的冲动了呢! 那么究竟该如何设计和实现一门自己的DSL呢?在这个系列文章中,我将“手把手”地和大家一起看看设计和实现一门DSL(这里主要指外部DSL)的全流程。 ...

May 24, 2022 · 14 min · Tony Bai

使用ANTLR和Go实现DSL入门

本文永久链接 – https://tonybai.com/2022/05/10/introduction-of-implement-dsl-using-antlr-and-go 一. 引子 设计与实现一门像Go这样的通用编程语言的确很难!那是世界上少数程序员从事的事业,但是实现一门领域特定语言(Domain Specific Language, DSL)似乎是可行的。 就像著名的语言解析器生成工具ANTLR作者Terence Parr在《编程语言实现模式》一书中说的那样: ...

May 10, 2022 · 24 min · Tony Bai

Go函数调用链跟踪的一种实现思路

这篇文章的初衷是想解答知乎上的一位知友提出的问题。没想到完成一种实现后,这个问题居然被删除了。那么既然实现了,就分享出来吧。问题的原文找不到了,问题大致是这样的: 一个程序中存在多个函数调用链都调用了函数D: A1 -> B1 > C1 -> D A2 -> B2 > C2 -> D A3 -> B3 -> C3 -> D ... ... 那么,如果某次函数D被调用时出现了问题,那么怎么知道这个D是哪个函数调用链里的D呢? 有些gopher可能会说通过Delve在线调试打印函数调用栈可以知晓D的调用链,还有些gopher可能会说通过各个函数中输出的业务日志可以查明出问题的D归属的函数调用链,这些都是可行的思路。 ...

December 10, 2020 · 10 min · Tony Bai