Go 1.18 正式发布了,这是一个包含大量新功能的版本,同时此版本也是Go语言“里程碑式”的更新,引入了对模糊测试的原生支持,Go语言是第一个这样做的主流编程语言。
Go 1.18新版本的重大特性:
泛型
泛型一直是开发者强烈希望支持的特性,在1.18版本中支持使用一些泛型的代码,不过Go语言团队也坦言不排除会在以后的版本中中断支持。
- 函数和类型声明的语法,支持类型参数。
- 参数化函数和类型可以通过在方括号中列出类型参数来实例化。
- 新标记
~
已添加到操作符和标点符号中。
- 接口类型的语法允许嵌入任意类型以及 union 和 ~T 类型元素,但接口只能用作类型约束。
- 预声明标识符
any
是空接口的别名,可以用来代替interface{}
。
模糊测试
Go 1.18 支持 fuzzing(模糊测试),这使得Go代码增加了一层额外的安全性。但是,模糊测试会消耗大量的内存,甚至可能会影响到机器的性能。
编译器
编译器的类型检查器支持泛型,但是也正是因为这样,Go 1.18 的编译速度可能比 Go 1.17 的编译速度慢大约 15%,不过Go语言团队表示预计将在Go 1.19版本中会专注于提高编译器的速度。