首页 >后端开发 >Golang >1.20 之前的版本中,Go 泛型对 Map Key 的'comparable”约束是否可以减弱?

1.20 之前的版本中,Go 泛型对 Map Key 的'comparable”约束是否可以减弱?

Susan Sarandon
Susan Sarandon原创
2024-12-17 02:51:25702浏览

Can Go Generics' `comparable` Constraint Be Weakened for Map Keys in Pre-1.20 Versions?

Go 泛型:映射键的类型约束

问题:

当使用泛型定义的链表作为Go 1.18中的map key,出现错误信息,提示该链表没有实现可比较的接口。是否有适合此目的的较弱替代约束?

答案:

Go 1.20(2023 年 2 月)

The可比较约束是映射键的适当的包罗万象的约束。在 Go 1.20 中,解决了规范可比较和可比较类型之间的不一致问题,使您的代码能够成功编译。

Go 1.18 和 1.19

Go 中的可比较约束1.18 和 1.19 专为严格可比较的类型而设计,支持 == 和 != 而不会出现运行时恐慌。这不包括接口,即使是那些支持相等运算符的接口。由于接口具有无限类型集,因此它们无法实例化为可比较的。

要解决此问题,请考虑使用嵌入可比较的自定义约束,例如:

type List interface {
    comparable
    isList() bool
}

结构上实现此约束将允许链接列表用作地图键。

以上是1.20 之前的版本中,Go 泛型对 Map Key 的'comparable”约束是否可以减弱?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn