Go ジェネリックでは順序演算子で比較可能な制約を使用できないのはなぜですか?
Go ジェネリックを探索しているときに、次のような場合にエラーが発生することがあります。 >を使用して組み込みの比較可能な型の演算子。これは、比較可能な制約が等価演算子 (== および !=) のみをサポートしているのに対し、順序演算子 (<、>、<=、および >=) には順序付き制約が必要であるためです。
比較可能な型と順序付けされた型の違いは何ですか?
比較可能な制約は、配列や構造体などの等価演算子をサポートする型に対するものです。匹敵する分野。ただし、順序演算子は、数値型や文字列などの順序付けされた型に適用できます。
Go 1.18 ~ 1.20 のソリューション
Go バージョン 1.18 ~ 1.20では、constraints.Ordered 制約を使用して順序演算子をサポートできます。この制約には、Integer、Float、~string などの型が含まれます。
Go 1.21 以降のソリューション
Go 1.21 では、標準ライブラリに cmp パッケージが導入されています。順序付き制約と、順序付き型の操作を容易にする 2 つの汎用関数 Less と Compare。
以上がGo ジェネリックスで順序演算子 (`` など) と `comparable` を使用できないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。