為什麼不能在 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中文網其他相關文章!