golang 1.18 发布 - 2022-3-16

Go1.18带来了重大更新,包括备受期待的泛型支持和模糊测试工具。泛型的引入使得代码更具通用性,但目前存在一些限制,如无法处理类型声明,不支持某些预声明函数等,预计在Go1.19中会有所改进。模糊测试工具在提高代码安全性的同时,需要注意其对内存和存储空间的影响。此外,整个Go生态系统还需时间来适应这些语言变化,相关工具、文档和库的更新工作正在进行中。
摘要由CSDN通过智能技术生成

更新日期:2022-3-16

发布说明:

https://golang.org/doc/go1.18

语言变化

泛型

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 生态系统的巨大变化。虽然我们更新了几个支持泛型的核心工具,但还有很多工作要做。剩余的工具、文档和库需要时间才能赶上这些语言变化。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值