Go / 版本发布

Go 1.27 已经发布

大庆开荒 ·
08-28 22:15

原文链接:https://go.dev/blog/go1.27

1. 语言特性

  • 泛型方法:正式支持在方法上使用泛型参数。例如 math/rand/v2.Rand 新增了一个泛型方法 N[Int intType](n Int) Int,可替代此前为每种整数类型单独编写的方法。
  • 结构体字面量增强:结构体字面量的键现在可以是该结构体类型的任意合法字段选择器,允许直接初始化嵌套或嵌入结构体的字段。
  • 函数类型推断推广:泛型函数的类型推断扩展到所有赋值上下文,包括复合字面量、类型转换和通道发送,无需显式指定类型参数。

2. 工具链改进

  • go fix 新增多个现代化工具:atomictypesembedlitslicesbackwardunsafefuncs
  • go doc 支持 package@version 查询(如 go doc example.com/pkg@v1.2.3)。
  • go mod tidy 自动将 go.mod 中多个 require 块合并为标准的直接依赖和间接依赖两块结构。

3. 性能与运行时

  • 内存分配优化:针对小于 80 字节的小对象采用专门化尺寸分配,分配成本最高降低 30%,对分配密集型程序整体性能提升约 1%。
  • Goroutine 泄漏检测runtime/pprof 中的 goroutineleak 特性正式 GA,可自动检测永久阻塞的 goroutine。

4. 标准库新增

  • encoding/json/v2:提供高级 JSON 处理,支持可配置选项和更严格的默认值;底层 encoding/json 包已改用 v2 实现,反序列化更快且保持向后兼容。
  • crypto/mldsa:实现后量子签名方案 ML-DSA(FIPS 204),已集成到 crypto/x509crypto/tls
  • uuid:原生支持 UUID 的生成与解析。
  • simd / simd/archsimd:实验性 SIMD 支持。
  • net/http/httptest:新增 NewTestServer,提供内存中的模拟网络,可与 testing/synctest 包配合使用。

加入开源交流群

请加站长微信,免费进入交流群,和开源爱好者一起讨论。

站长微信二维码