为什么不能在 Go 泛型中使用带有顺序运算符的可比较约束?
在探索 Go 泛型时,您可能会遇到以下错误:使用 >内置可比较类型的运算符。这是因为可比较约束仅支持相等运算符(== 和 !=),而顺序运算符(、=)需要有序约束。
可比较类型和有序类型有什么区别?
可比较约束适用于支持相等运算符的类型,包括具有可比较字段的数组和结构体。但是,顺序运算符适用于有序的类型,例如数字类型和字符串。
Go 1.18 到 1.20 的解决方案
Go 版本 1.18 到 1.20 ,您可以使用constraints.Ordered 约束来支持顺序运算符。此约束包括 Integer、Float 和 ~string 等类型。
Go 1.21 及以上版本的解决方案
在 Go 1.21 中,标准库引入了 cmp 包,其中包含有序约束和两个通用函数 Less 和 Compare,它们有助于处理有序类型。
以上是为什么 Go 泛型不能使用带有顺序运算符(``等)的'comparable”?的详细内容。更多信息请关注PHP中文网其他相关文章!