Go 1.18 泛型时代

GENERICS · WORKSPACES · MATCH DEFAULT
GA
泛型支持状态
编译时类型推断,运行时无额外开销
~8 年
开发时长
从泛型提案讨论到正式落地
3 项
新增语言特性
泛型 · Workspaces · Match 默认赋值
// Chapter · 2022.02 Release: Feb 24, 2022
Go 1.18 是 2022 年 2 月最受瞩目的开源发布之一
泛型补齐了 Go 语言最后一块被社区长期诟病的短板——集合库、算法库、序列化框架等通用代码终于可以用统一接口表达,不必再重复编写多套具体类型版本。

Workspaces 等新机制显著改善了开发者日常体验,让大型多模块仓库的本地联调从"手工 replace 地狱"回归简洁。同时引入 match 默认赋值,补齐了控制流中一个长期缺失的小但高频的语言糖。
> generics_in_action.go
func Filter<T any>(slice []T, pred func(T) bool) []T { var result []T for _, v := range slice { if pred(v) { result = append(result, v) } } return result } // 编译期展开 · 零运行时开销
G
01 / FEATURE
泛型正式落地
经过八年讨论,Go 语言终于获得泛型支持,集合库、算法库编写效率大幅提升。
<T any>type parametersinference
⚡
02 / TOOLCHAIN
Toolchain 升级
编译器支持泛型展开,运行时性能开销几乎为零,与手写具体类型版本持平。
monomorphizationzero-overhead
W
03 / WORKSPACE
Workspaces 模式
新增 Go Workspaces 机制,简化多模块开发体验,替代此前笨重的 replace 做法。
go workmulti-moduleno replace
★
04 / STANDARD LIB
标准库新特性
time、net/http 等标准库获得改进,支持更优雅的错误处理和中间件编程。
timenet/httpmiddleware
// Go VERSION ROADMAP 2009 ──────────── 2024
Go 1.0
2009
Go 1.5
2015 · 移除 GC 暂停
Go 1.8
2017 · 提案讨论启动
Go 1.11
2018 · Modules
Go 1.16
2021 · embed / 自动管理
Go 1.18 ★
2022.02 · 泛型时代
Go 1.22+
2024 · 持续演进