Go 1.27 Interactive Tour
6 hours ago
- Go 1.27 引入了方法上的类型参数,允许将类型上的泛型操作定义为方法,而不是包级函数。
- 结构体字面量键现在可以直接使用嵌入结构体中的提升字段,简化了初始化语法。
- 函数类型推断已推广到转换、复合字面量和其他上下文中,减少了对显式类型参数的需求。
- 编译器为小内存分配(小于80字节)生成大小专用的内存分配例程,性能提升高达30%,且二进制大小增加极小。
- 当模块使用 Go 1.27 或更高版本时,Goroutine 回溯现在包含 runtime/pprof 标签,有助于调试和性能分析。
- Goroutine 泄漏检测器从实验性升级为 runtime/pprof 中的常规分析,能够检测永久阻塞的 goroutine。
- 新的 crypto/mldsa 包实现了后量子数字签名(ML-DSA),并在 crypto/x509 和 crypto/tls 中得到支持。
- 标准库引入了一个 uuid 包,用于根据 RFC 9562 生成、解析和比较 UUID。
- encoding/json/v2 从实验性毕业,成为 encoding/json 的后端实现,保持行为不变,并可选地启用 v2 特定功能,如排序的映射键。
- 一个实验性的 simd 包提供了可移植的 SIMD 操作,在可用时使用硬件加速,否则使用回退模拟。
- 新增 strings.CutLast 和 bytes.CutLast 函数,用于在分隔符的最后一次出现处分割字符串/字节切片。
- hash/maphash 包引入了 Hasher[T] 接口,用于自定义哈希和相等性,支持基于哈希的数据结构。
- math/big 添加了 Int.Divide 方法,支持显式舍入模式(Trunc、Floor、Round、Ceil),用于精确的商和余数计算。
- math/rand/v2 添加了 (*Rand).N 方法,用于从自定义源生成有界随机数。
- testing/synctest 添加了 Sleep 辅助函数,结合了合成时钟推进和等待 goroutine 稳定。
- httptest.NewTestServer 创建一个内存中的测试服务器,无需真实 TCP 端口,并通过 t.Cleanup 自动清理。
- Unicode 支持升级到 Unicode 17,新增了脚本、字符和属性。
- 较小的更改包括同步时间通道、自动关闭时排空 http.Response.Body、HTTP/2 优先级轮询、Windows/macOS 上的 SSL_CERT_FILE 支持,以及各种 go 工具增强。
- 底层改进包括真实的 net/http/internal/http2 包、HTTP/3 脚手架、新的编译器优化、运行时中的 SIMD 使用、重新组织的类型元数据、更严格的 linkname 检查,以及实验性的映射内存布局。