Web Analytics

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

解构Go函数迭代器——为什么 break 没有按预期工作?

本文永久链接 – https://tonybai.com/2025/10/29/why-break-in-go-function-iterators-does-not-work 大家好,我是Tony Bai。 在我的极客时间专栏《Tony Bai·Go语言进阶课》的关于 Go 1.23+ 函数迭代器的第9讲中,我介绍了一种非常强大的高级用法——迭代器组合 (Iterator Composition)。通过像 Filter 和 Map 这样的高阶函数,我们可以用一种相对优雅、富有表现力的方式,构建复杂的数据处理管道。 ...

October 29, 2025 · 13 min · Tony Bai

“自立程序员宣言”解读:这不就是我们一直在说的Go语言哲学吗?

“自立程序员宣言”解读:这不就是我们一直在说的Go语言哲学吗? - Tony Bai Tony Bai 一个程序员的心路历程 Google Go语言编码风格规范 Google Go语言编码风格规范:指南篇 Google Go语言编码风格规范:决定篇 Google Go语言编码风格规范:最佳实践篇 Go语言第一课FAQ ...

September 26, 2025 · 6 min · Tony Bai

“骑手与大象”架构:超越微服务与单体之争的务实之道?

“骑手与大象”架构:超越微服务与单体之争的务实之道? - Tony Bai =============== Tony Bai 一个程序员的心路历程 Google Go语言编码风格规范 ...

June 17, 2025 · 8 min · Tony Bai

Go 1.22新特性前瞻

本文永久链接 – https://tonybai.com/2023/12/25/go-1-22-foresight 美国时间2023年12月20日,Go官方宣布Go 1.22rc1发布,开启了为期2个多月的、常规的公测之旅,Go 1.22预计将于2024.2月份正式发布! ...

December 25, 2023 · 16 min · Tony Bai

为什么这个T类型实例无法调用*T类型的方法

本文永久链接 – https://tonybai.com/2022/02/27/go-addressable 近期在“Go语言第一课”专栏后台看到一位学员的一则留言,如下图: 由于有课程上下文,所以我这里将问题的上下文重新描述一下。 在专栏的第25讲,我们学习了Go语言提供的一个“语法糖”,比如下面这个例子: type T struct { a int } func (t T) M1() { t.a = 10 } func (t *T) M2() { t.a = 11 } func main() { var t1 T t1.M1() t1.M2() var t2 = &T{} t2.M1() t2.M2() } Go语言的类型有方法集合(method set)的概念,以上面例子来说,类型T的方法集合为{M1},而类型*T的方法集合为{M1, M2}。不过方法集合仅用于判断某类型是否实现某接口类型。当我们通过类型实例来调用方法时,Go会提供“语法糖”。上面这个例子先声明了类型T的变量t1,我们看到它不仅可以调用其方法集合中receiver参数类型为T的方法M1,它还可以直接调用不属于其方法集合的、receiver参数类型为*T的方法M2。T类型的实例t1之所以可以调用receiver参数类型为*T的方法M2都是Go编译器在背后自动进行转换的结果,即t1.M2()这种用法是Go提供的“语法糖”:Go判断t1的类型为T,与方法M2的receiver参数类型*T不一致后,会自动将t1.M2()转换为(&t1).M2()。 ...

February 27, 2022 · 6 min · Tony Bai

Go 1.17新特性详解:支持将切片转换为数组指针

本文永久链接 – https://tonybai.com/2021/08/18/go-language-specs-changes-in-go-1-17 Go属于那种极简的语言,从诞生到现在语言自身特性变化很小,不会像其他主流语言那样走“你有的我也要有”的特性融合路线。因此新语言特性对于Gopher来说属于“稀缺品”,属于“供不应求”那类事物^_^。这也直接导致了每次Go新版本发布,我们都要首先看看语言特性是否有变更,每个新加入语言的特性都值得我们去投入更多关注,去深入研究。下面我们就来深入Go 1.17版本中语言规范的一些变化! 1. 支持将切片转换为数组指针 在Go 1.17版本之前,我们可以将数组转换为切片,数组将成为转换后的切片底层存储数组,因此,通过切片可以直接改变数组中的元素,就像下面代码这样: ...

August 18, 2021 · 7 min · Tony Bai

理解Golang语句中的求值顺序

Golang在变量声明、初始化以及赋值语句上照比C语言有了许多改进: a) 支持在同一行声明多个变量 var a, b, c int b) 支持在同一行初始化多个变量(不同类型也可以) var a, b, c = 5, “hello”, 3.45 a, b, c := 5, “hello”, 3.45 (short variable declaration) ...

August 27, 2015 · 8 min · Tony Bai