← 文章 / 编程开发
Hacker News 1天前 · 2026-08-20 08:38:06 · 7 阅读

Go 1.27 正式发布

今天 Go 团队很高兴地宣布 Go 1.27 正式发布。可以在下载页面获取二进制归档和安装包。

Go 1.27 在语言、工具链、运行时和标准库方面都带来了重大改进。下面是部分亮点。

语言变更

Go 1.27 为语言规范引入了三项重要更新。

首先,现在支持泛型方法。例如,参见 math/rand/v2.Rand

// 在 Go 1.27 之前,需要为 Rand 的每种类型分别添加方法
// (为简洁起见省略无符号整数方法)。
func (r *Rand) Int32N(n int32) int32
func (r *Rand) Int64N(n int64) int64
func (r *Rand) IntN(n int) int

// Go 1.27 新增了一个泛型方法,适用于所有整数类型。
func (r *Rand) N[Int intType](n Int) Int

其次,结构体字面量中的键现在可以是该结构体类型的任意合法字段选择器,从而可以直接初始化嵌套或嵌入结构体中的字段:

type Habitat struct {
    Burrow string
}

type Gopher struct {
    Name    string
    Habitat // 嵌入结构体。
}

// Go 1.27 允许直接使用 Burrow 作为键。
g := Gopher{
    Name:   "Gopher",
    Burrow: "Burrow #42",
}

最后,函数类型推断已被泛化,可应用于所有赋值上下文。泛型函数现在可以在复合字面量、类型转换和通道发送中省略显式类型参数:

func GenericFormatter[T any](v T) string {
    return fmt.Sprintf("value: %v", v)
}

type IntFormatter func(int) string

// Go 1.27 在复合字面量、转换和通道发送中推断 T = int。
formatters := []IntFormatter{GenericFormatter}
fn := IntFormatter(GenericFormatter)
ch := make(chan IntFormatter, 1)
ch <- GenericFormatter

工具改进

  • go fix 新增了若干 现代化重构atomictypesembedlitslicesbackwardunsafefuncs
  • go doc 现已支持 package@version 查询,例如 go doc example.com/pkg@v1.2.3
  • go mod tidy 现在会自动将 go.mod 中的多个 require 块合并为标准的直接依赖与间接依赖 两段式结构。

性能与运行时

标准库新增内容

完整的变化列表和详情请参阅 Go 1.27 发布说明

接下来几周将有后续博文,更深入地介绍 Go 1.27 相关的一些主题,届时请回访阅读。

感谢所有通过编写代码、提交 Bug、试用实验性功能以及测试发布候选版来为本次发布做出贡献的开发者。一如既往,如果发现任何问题,请提交 issue

希望你喜欢使用 Go 1.27!

原始来源: Hacker News

评论 (0)