前言

2022年3月15日,Go官方团队在官网上正式宣布了Go 1.18版本的发布。

Go 1.18是Go语言诞生以来变化最大的版本,本人针对官方原文做了一个翻译,以飨读者。

同时在本文最后,附上《Go泛型官方教程中文版本》以及本人整理的《一文读懂Go泛型设计和最佳实践》

原文翻译

谷歌Go团队

2022.3.15

今天我们很激动向大家宣布Go 1.18终于发布啦,大家可以去下载页面进行下载。

Go 1.18版本发布了非常多的新功能、性能优化以及Go语言有史以来最重大的修改(编者注:最重大的修改指的是泛型)。

毫不夸张地说,Go 1.18的部分设计从十多年前我们第一次发布Go就开始了。

泛型

Go 1.18引入了对泛型的支持。泛型是Go社区最常被要求支持的功能,我们也很自豪地提供了可以满足大多数用户要求的泛型设计。

Go 1.18的后续版本会对一些更复杂的泛型使用场景提供支持。我们鼓励大家通过我们官方泛型教程来了解泛型以及探索使用泛型来优化代码的最佳实践。

Go 1.18发布清单里有更多使用泛型的细节。

Fuzzing模糊测试

Go 1.18版本还引入了fuzzing模糊测试。Go是第一个在语言的标准工具链中引入fuzzing模糊测试的主流编程语言。

和泛型类似,fuzzing的设计也经历了很多时间,我们很高兴终于在Go 1.18里发布了fuzzing。大家可以查看官方fuzzing教程来学习这个新功能。

工作区

Go module已经被广泛使用,在我们的年度调查中Go语言开发者对Go module也都表现了高度的满意。

在我们2021的年度用户调查中,大家使用module最常见的挑战就是跨多个Go module工作。

在Go 1.18版本里发布了工作区模式来解决这个问题,让大家跨多个module工作更容易。

20%性能提升

苹果M1,ARM64和PowerPC64用户会欣喜若狂。Go 1.18通过把Go 1.17的寄存器ABI调用约定扩展到这些新的CPU架构,实现了对CPU性能接近20%的提升。

为了强调这个版本的性能提升幅度,我们把20%的性能提升作为本文第4个最重要的标题。

关于Go 1.18发布的所有内容更为详细的描述,大家可以参考Go 1.18发布清单。

Go 1.18对于整个Go社区而言是一个巨大的里程碑。我们想感谢所有提bug、提交修改、编写使用教程以及对Go 1.18的发布提供过帮助的所有人。没有你们我们无法到达现在整个阶段,感谢你们!

尽情享受Go 1.18吧!

开源地址

GitHub: GitHub - jincheng9/go-tutorial: Go learning materials,涵盖基础、中级和高级教程,涵盖Go语言初级、中级和高级实战教程。



References

  • Go 1.18 is released! - The Go Programming Language
  • Why Generics? - The Go Programming Language
  • Go 1.18 Release Notes - The Go Programming Language
  • Tutorial: Getting started with multi-module workspaces - The Go Programming Language