昨天晚上2022-03-15 Go 团队终于发布 Go 1.18了,您可以通过https://go.dev/dl/获得最新版本。

Go 1.18 是一个包含大量新功能的版本,同时不仅改善了性能,也对语言本身做了有史以来最大的改变。毫不夸张地说,Go 1.18 的部分设计十多年前,在第一次发布 Go 时就开始了构思(例如泛型,最早的时候在2009年Russ Cox 在博客里面讨论过泛型如何设计https://research.swtch.com/generic)。

下面让我们一一来快速预览一下这些最新特性

1.泛型

在 Go 1.18 中,我们引入了新的支持使用参数化类型的泛型代码(https://go.dev/blog/why-generics)。支持泛型一直是 Go 最常要求的功能,

我们很自豪能够提供社区里面大多数用户所需的泛型支持。后续版本将会提供某些更复杂的泛型用例。

我们鼓励您使用我们的泛型教程(https://blog.iw3c.com/archive/go-1-18-generics).

2.模糊测试

在 Go 1.18 中,Go 是第一个具有模糊测试的主要语言完全集成到其标准工具链中的主流语言。像泛型一样,模糊测试在设计中已经存在很长时间了,我们很高兴通过此版本与 Go 生态系统分享它。

请查看我们的模糊测试教程(https://go.dev/doc/tutorial/fuzz) 帮助您开始使用此新功能。

Go 模糊测试

3.workspace 工作区(重要)

Go modules功能现在已经被广泛采用,Go用户在我们的年度调查报告中反馈了非常高的满意度分数。在2021年的用户调查中,用户对modules最常见的挑战是在多个modules中进行跨modules工作。在Go1.18中,我们通过新的Go工作区模式简化这种多modules工作(https://go.dev/doc/tutorial/workspaces)。更多可以参考这篇文章:https://blog.iw3c.com/archive/go-118-module-workspace

4.20%性能提升

苹果M1、ARM64和PowerPC64用户一定非常兴奋!Go1.18包含了高达20%的CPU性能提升。这是因为Go1.17中寄存器ABI调用约定扩展到了这些架构。为了强调这个提升多么巨大,我们使用20%性能提升作为重要的第四节的标题!