Go 1.20 首个 RC 已发布,正式版计划明年 2 月推出。
值得注意的是,Go 1.20 是最后一个支持在 macOS 10.13 High Sierra 或 10.14 Mojave 上运行的版本。Go 1.21 将需要 macOS 10.15 Catalina 或更高版本。
此外,Go 1.20 添加了对 RISC-V 上的 FreeBSD (, ) 的实验性支持。
Go 1.20 目前在语法方面包含 4 项变化。
从 slice(切片)到数组的转换
Go 1.7 增加了从 slice (切片)到数组指针转换的功能,Go 1.20 对该功能进行了扩展 —— 可直接从 slice 转换成数组。
比如给定一个 slice, 可以写成 。
标准库 包定义了 3 个新函数:, 和
在 Go 1.17 中, 包添加了 Slice 函数:
: 对于 类型的 表达式,返回一个 类型的切片,其底层数组从 开始, 其长度和容量为
再加上 Go 1.20 新定义的 3 个函数,这 4 个函数提供了构造和解构 slice 以及字符串值的完整功能。
详情查看 https://tip.golang.org/ref/spec/#Package_unsafe。
Comparable 类型
Comparable 类型(例如普通接口 ordinary interfaces)现在可以满足 约束,即便类型实参 (type argument) 不是严格可比较类型。
值比较
Go 语言规范进行了更新,结构体变量的值每次只比较一个字段,字段比较的顺序和字段在结构体里定义的顺序保持一致。一旦某个字段的值比较出现不一致,就会马上停止比较。该变化没有对代码造成影响。