Go 1.20 正式发布
点击图片,查看详情
导读:Go 1.20正式发布,看看有什么别致的。
继 Go 1.19 发布六个月之后,Go 1.20 现已正式发布。该版本的大部门更改都集中在在东西链、运行时和库的实现中。
新版本下载地址:/
Go 1.20 是最初一个能够在任何版本的 Windows 7、8、Server 2008 和 Server 2012 上运行的版本,Go 1.21 将至少需要 Windows 10 或 Server 2016。且 Go 1.20 是最初一个撑持在 macOS 10.13 High Sierra 或 10.14 Mojave 上运行的版本,Go 1.21 将需要 macOS 10.15 Catalina 或更高版本。此外,Go 1.20 还添加了对 RISC-V 上的 FreeBSD (GOOS=freebsd, GOARCH=riscv64) 的尝试性撑持。
Go 1.20 在语法方面包罗了 4 项改变:
Go 1.7 增加了从 slice (切片)到数组指针转换的功用,Go 1.20 对该功用停止了扩展 —— 可间接从 slice 转换成数组。好比给定一个 slicex,[4]byte(x) 能够写成 *(*[4]byte)(x)。
原则库 unsafe 包定义了 3 个新函数:SliceData,String 和 StringData。与 Go 1.17 的 Slice 一路,那些函数如今供给了构建息争构 slice 和字符串值的完全功用,而不依靠于它们的切确表达。
Go 语言标准停止了更新,定义构造体变量的值每次只比力一个字段,字段比力的挨次和字段在构造体里定义的挨次连结一致。一旦某个字段的值比力呈现纷歧致,就会立即停行比力。
Comparable 类型(例如通俗接口 ordinary interfaces)如今能够称心 comparable 约束,即使类型实参 (type argument) 不是严厉可比力类型。
一些其他更新内容还包罗:
$GOROOT/pkg 目次不再存储原则存档的预编译包存档,以削减 Go 发行版的大小。
go 号令如今定义架构功用 build flags,如 amd64.V2,以容许根据特定 CPU 架构功用的存在或不存在来抉择包实现文件。那关于 x86_64 微架构特征级此外工做来说是个好动静。
go build 和 go install 以及其他与构建相关的号令如今撑持 “-cover” flag,用于启用带有 code coverage instrumentation 的构建。
因为在垃圾搜集器上的工做,内存开销削减和 CPU 性能进步高达 2%。
对 Profile Guided Optimizations (PGO) 的预览撑持。
在 Linux 上,linker 如今在链接时为 glibc 或 musl 抉择动态阐明器。
一个新的 crypto/ecdh 包,为 NIST curves 和 Curve25519 上的 Elliptic Curve Diffie-Hellman 密钥交换供给明白撑持。
在此版本中,Go开发团队称对编译器和垃圾搜集的改进将 CPU 性能进步了 2%,并削减了内存开销。
Go 团队还陈述说构建速度进步了大约 10%,使它们回到了 Go 1.17 中的程度。
固然,目前 Go 1.20 在从源代码构建时必需从 Go 1.17.13 或更高版本引导,但该团队方案在将来的版本中每年将引导东西链向上挪动一次,每年一次。
另一件需要开发者重视的工作是,Go 1.21 将不再撑持旧版操做系统,例如 Windows 7、8、Server 2008 和 Server 2012、macOS 10.13 High Sierra 和 10.14 Mojave。