Go 语言 1.26 正式发布,new 函数可直接指定初始值,泛型支持递归类型引用,Green Tea 垃圾回收器改为默认启用,Go 与 C 语言之间的互通机制 cgo 额外开销降低约 30%,go fix 命令全面重写并新增数十个自动修正器,标准库也加入多个新包与实验功能。
Go 团队发布 Go 1.26,二进制包与安装程序已上线官方下载页面。新版本包含两项语言语法与类型系统的调整,并带来运行时(Runtime)与工具链的性能改进,以及帮助代码跟上最新语言特性和标准库惯用写法的自动修正工具。
过去 Go 内置的 new 运算符只能接受类型,从 Go 1.26 开始允许使用表达式作为运算符,用于直接指定新变量的初始值,使以指针表示可选字段的序列化数据结构更容易直接赋值。泛型类型系统则解除了泛型类型不得在自身类型参数列表中自我引用的限制,使类型约束能表达更复杂的递归接口与数据结构需求。
此前属于实验功能的 Green Tea 垃圾回收器在 Go 1.26 中改为默认启用。Go 团队指出,cgo 的基础开销约降低 30%。编译器在更多场景下可将切片(Slice)的底层存储区分配到栈上,从而减少分配成本并提升整体执行效率。
工具链方面,go fix 命令经过全面重写,改以 Go 分析框架为基础,并加入约二十多个现代化修正器,提供可自动应用且预期不改变程序行为的修正建议。go fix 也纳入内联分析器(Inline Analyzer),可针对以 //go:fix inline 注释标记的函数尝试将调用点内联,目的是协助代码逐步采用新语言特性或迁移至更新的标准库接口。
除了既有功能改进,Go 1.26 也在标准库中新增 crypto/hpke、crypto/mlkem/mlkemtest 与 testing/cryptotest 等包。官方同时披露多项需明确选择启用的实验功能,包括用于单指令多数据运算的 simd/archsimd 包、支持安全清除敏感临时数据的 runtime/secret 包,以及在 runtime/pprof 中新增可报告泄漏 goroutine 的剖析项目。Go 团队表示,这些实验功能预计将在未来进入正式版,并鼓励社区提前试用与反馈。
Go 1.26 还对 go 命令、运行时、编译器、链接器与移植端进行了多项调整,也包含部分 GODEBUG 设置的更新。