Go 1.18初窥

less than 1 minute read

根据Go Blog: Go 1.18 is released!一文的概要,了解下Go 1.18的新特性。

(1)Generics

引入了泛型,类型参数用[]包起来表示,也支持用interface自定义类型约束,还有类型推断。

主要参考这些资料:

(2)fuzzing

根据维基百科,模糊测试定义如下:

模糊测试 (fuzz testing, fuzzing)是一种软件测试技术。其核心思想是将自动或半自动生成的随机数据输入到一个程序中,并监视程序异常,如崩溃,断言(assertion)失败,以发现可能的程序错误,比如内存泄漏。模糊测试常常用于检测软件或计算机系统的安全漏洞。

模糊测试可以突破单元测试的界限,自行基于给定的少量测试集(称为seed)生成更多的测试集作为输入,可能触及一些难以想到的边界测试用例。

初步看来,它的验证点不在于函数的基本功能正确与否,而是边界情况下是否能够work、是否会产生预料外的结果、是否有安全漏洞等。

使用go test -fuzz=<FuzzTestName> -fuzztime <duration>来执行fuzz tests,如果没有提供fuzztime参数,那么测试会一直跑下去直到失败为止。

参考资料:

(3)workspaces

解决work with multiple modules的问题。也就是一个代码仓库里能够有多个go的module,每个module有各自的go.mod和go.sum文件,这些 go module 统一由仓库根路径下的go.work文件管理。


上述三部分内容中的Tutorial相关代码已经提交到:https://github.com/chenlujjj/go1.18-preview。

要了解更多关于Go 1.18的新特性,阅读 Go 1.18 Release Notes吧。

Tags:

Categories:

Updated:

Comments