, =) 与 Go 泛型? " />
在 Go 1.18 中,泛型允许定制约束以强制类型兼容性。但是,当尝试使用 '>' 时运算符与“可比较”约束,可能会出现错误。
“可比较”约束验证类型是否支持相等运算符(“==”和“!=”) ')。它包含符合映射键的类型,包括具有类似字段的数组和结构。值得注意的是,接口被排除在外,因为它们可能会导致运行时恐慌。比较。
虽然 Go 规范在术语“比较运算符”下提到了顺序运算符,但它们区分了等价('==' 和 '!=')和排序运算符(“”、“=”)。 'ordered.'
Go 1.21
走吧1.18 至 1.20
示例:
import "golang.org/x/exp/constraints" func getBiggerNumber[T constraints.Ordered](t1, t2 T) T { if t1 > t2 { return t1 } return t2 }
通过选择适当的约束,您可以确保泛型函数中的类型兼容性和正确的比较行为。
以上是如何在 Go 泛型中安全地使用顺序运算符(<、>、<=、>=)?的详细内容。更多信息请关注PHP中文网其他相关文章!