
前言
Gopher 们,Go 1.26.0 于 2026 年 2 月 11 日 正式发布啦!虽然这篇介绍来得稍晚了一些,但 Go 1.26.0 中的不少变化依然值得我们关注。
Go 1.26.0 相比 Go 1.25.0 在语言、工具链、运行时、编译器以及标准库方面都有改进。比如内置函数 new 得到了增强,泛型类型的约束表达能力进一步提升,go fix 命令完成重构,Green Tea GC 也从实验功能变为默认启用。让我们一起来看看 Go 1.26.0 带来了哪些新变化吧!
准备好了吗?准备一杯你最喜欢的咖啡或茶,随着本文一探究竟吧。

快速安装
您可以从下载页面下载二进制和源代码发行版:
如果你已经安装了其他的 Go 语言版本,你也可以通过以下命令快速安装 Go 1.26.0 版本:
bash
$ go install golang.org/dl/go1.26.0@latest
$ go1.26.0 download
Downloaded 0.0% ( xxx / xxxxx bytes) ...
Downloaded 50.4% ( xxx / xxxxx bytes) ...
Downloaded 100.0% ( xxx / xxxxx bytes)
Unpacking /Users/chenmingyong/sdk/go1.26.0/go1.26.0.darwin-arm64.tar.gz ...
Success. You may now run 'go1.26.0'
$ go1.26.0 version
go version go1.26.0 darwin/arm64
语言的变更
Go 1.26.0 版本对 语言 和 类型系统 进行了两项重大改进:内置函数 new 的加强与 泛型设计 的优化。
内置函数 new 的加强
在 Go 1.26 里,new 内置函数不再只能接收类型,现在还可以直接传入一个表达式,用来指定该变量的初始值。
以前我们会这样写:
go
x := int64(300)
ptr := &x
现在可以简化为:
go
ptr := new(int64(300))
泛型设计的优化
Go 1.26 放宽了泛型类型的一项限制:在声明泛型类型时,类型参数的约束可以引用这个泛型类型本身。
例如下面的接口:
go
type Adder[A Adder[A]] interface {
Add(A) A
}
func algo[A Adder[A]](x, y A) A {
return x.Add(y)
}
在 Go 1.26 之前,type Adder[A Adder[A]] 这种写法是不允许的,因为在 Adder 自己的类型参数列表里又引用了 Adder[A]。
工具链的变更
Go command 命令
go fix
过去的 go fix 更多是一个历史兼容修复工具,主要用于帮助旧代码适配 Go 早期版本中的语言或标准库变更。但随着 Go 1 兼容性承诺长期稳定,这类历史修复规则已经逐渐过时。
Go 1.26 对 go fix 进行了全面重构,使它从 旧代码修复工具 升级为 代码现代化迁移工具 。新的 go fix 内置了数十个代码现代化规则,可以在不改变程序行为的前提下,帮助项目使用更新的语言特性、更推荐的 Go 写法以及新的标准库 API。
同时,新的 go fix 基于和 go vet 相同的 Go analysis 框架实现。这意味着,过去用于代码检查和诊断的分析能力,现在也可以进一步用于生成修改建议,并自动应用安全修复。
go mod init
Go 1.26 调整了 go mod init 生成 go.mod 文件时的默认 Go 版本。
如果使用 Go 1.26.0 正式版执行 go mod init,新生成的 go.mod 默认会写入 go1.25.0,也就是比当前工具链低一个版本。
如果希望新模块明确要求 Go 1.26,可以在 go mod init 后执行:
go
go get go@1.26
或者手动修改 go.mod 中的 go 版本。
cmd/doc
cmd/doc 和 go tool doc 已被删除。可以使用 go doc 替代 go tool doc。
Pprof
通过 -http 参数打开 pprof Web UI时,现在默认展示 火焰图 视图。之前的 图视图 可以通过 View -> Graph 菜单访问,也可以通过 /ui/graph 访问。
Runtime 的变更
新的垃圾回收器 Green Tea Garbage
在 Go 1.25 中作为实验功能提供的 Green Tea 垃圾回收器,现在已默认启用。官方预计,在大量依赖垃圾回收的真实程序中,垃圾回收开销可以降低约 10% 到 40%。
更快的 CGO 调用
cgo 调用的基础运行时开销降低了约 30%。
编译器(Compiler)的变更
编译器现在可以在更多场景下将切片的底层存储分配到栈上,从而提升性能。
标准库的变更
新增 crypto/hpke 包
新增的 crypto/hpke 包实现了 RFC 9180 中定义的 Hybrid Public Key Encryption,也就是混合公钥加密,并包含对后量子混合 KEMz 的支持。
errors
errors 库新增 AsType 函数,它是 As 函数的泛型版本。
log/slog
log/slog 新增了 NewMultiHandler 函数,它会创建一个 MultiHandler,用于管理所给定的多个 Handler。
小结
Go 1.26.0 在语言、工具链、运行时、编译器以及标准库方面都有不少改进,并带来了 new 内置函数增强、泛型约束放宽、go fix 重构以及 Green Tea GC 默认启用等重要变化。
此次更新不仅进一步提升了语言表达能力和工具链体验,也在运行时性能方面继续优化,例如降低 GC 开销、减少 cgo 调用成本,并让切片底层存储在更多场景下可以分配到栈上。
无论是日常开发、代码迁移,还是性能优化,Go 1.26.0 都带来了不少实用改进。
后续,我将深入介绍每个重要更新的具体内容,关注我,更多精彩的更新分析,敬请期待!
你好,我是陈明勇,一名热爱技术、乐于分享的开发者,同时也是开源爱好者。
我专注于分享 Go 语言相关的技术知识,同时也会深入探讨 AI 领域的前沿技术。
成功的路上并不拥挤,有没有兴趣结个伴?
Go 开源库代表作: go-mongox、go-optioner。