Go泛型终于在Go 1.18测试版初登场!

Go 1.18预计在数月内正式发布,而现在官方先发布了第一个Go 1.18 Beta测试版,这个版本有许多重要更新,但最受瞩目的莫过于泛型,这个社群敲碗多年的功能,另外,Go 1.18还加入模糊测试,也提高ARM64的程序代码执行性能。

这个Go 1.18 Beta测试版是首个支持参数化类别泛型程序代码的Go版本,而泛型是Go第一个主要版本以来,最重要的变化,也是官方有史以来,所做过最大的单一语言变更,官方提到,对于任何大型新功能,存在错误是经常见的情况,因此开发者要小心谨慎使用。

对于特殊的使用案例,像是特定类型的递归泛型类别,则推延到之后的版本加入,官方希望开发者踊跃把泛型应用在各种用例,以协助开发团队调试。

这个版本还内置模糊测试支持,自动找寻导致程序崩溃的无效输入。模糊测试是一种自动化测试,可以操纵程序的输入来发现各种bug,通过输入半随机的资料,能够发现既有单元测试可能遗漏的程序代码覆盖(Code Coverage),并且找出被忽略的边缘案例,对于发现安全漏洞和bug特别有用。

用户还能够在此Go 1.18测试版用到新的Go工作区模式,供开发者同时使用多个Go模块,该功能对于大型项目用例特别重要。新功能还包含经扩展的Go版本-m指令,该指令现在会记录构建细节,像是编译器旗标等,程序可以使用debug.ReadBuildInfo查询自己的构建详细信息,并且使用新的debug/buildinfo组件,从其他二进制文件中读取构建详细信息。

另外,官方在Go 1.17中增加了一个托管器调用约定更新,用来加速x86-64系统上的Go程序代码执行速度,而现在这项更新扩展到了ARM64和PPC64上,执行速度可以提高20%。