更新日期:2022-3-16
发布说明:
语言变化
泛型
bug 修复
工具
模糊测试
Go 1.18 包括 fuzzing 的实现,如 fuzzing 提案所述
请注意,模糊测试会消耗大量内存,并且可能会影响机器运行时的性能。另请注意,模糊引擎在运行时会将扩展测试覆盖率的值写入模糊缓存目录 $GOCACHE/fuzz。目前对可以写入模糊缓存的文件数量或总字节数没有限制,因此可能会占用大量存储空间(可能为数 GB)。
执行命令
当前的泛型实现具有以下已知限制:
-
Go 编译器无法处理泛型函数或方法中的类型声明。我们希望在 Go 1.19 中提供对此功能的支持。
-
realGo 编译器不接受带有预声明函数、imag和 的参数类型的参数complex。我们希望在 Go 1.19 中取消这个限制。
-
如果由的约束接口显式声明,Go 编译器仅支持在类型参数类型m的值上 调用方法。同样,方法值和方法表达式 也仅在由 显式声明时才受支持,即使由于所有类型都在implement 中可能位于方法集中。我们希望在 Go 1.19 中取消这个限制。 xPmPx.mP.mmPmPPm
-
Go 编译器不支持访问类型参数 type 的结构字段x.f ,x即使类型参数的类型集中的所有类型都有一个 field f。我们可能会在 Go 1.19 中删除此限制。
-
不允许将类型参数或指向类型参数的指针作为结构类型中的未命名字段嵌入。同样,不允许在接口类型中嵌入类型参数。目前还不清楚这些是否会被允许。
-
具有多个术语的联合元素可能不包含具有非空方法集的接口类型。目前还不清楚这是否会被允许。
泛型也代表了 Go 生态系统的巨大变化。虽然我们更新了几个支持泛型的核心工具,但还有很多工作要做。剩余的工具、文档和库需要时间才能赶上这些语言变化。