ホームページ > バックエンド開発 > Golang > Go ジェネリックで順序演算子 (<、>、<=、>=) を安全に使用するにはどうすればよいですか?

Go ジェネリックで順序演算子 (<、>、<=、>=) を安全に使用するにはどうすればよいですか?

DDD
リリース: 2024-12-11 13:27:18
オリジナル
237 人が閲覧しました

How Can I Safely Use Order Operators (<, >、<=, >=) を Go Generics で使用しますか?
、=) Go Generics を使用しますか? " />

Go ジェネリック: 比較可能な制約を持つ順序演算子

Go 1.18 では、ジェネリックにより、型の互換性を強制するために調整された制約が可能になります。ただし、「>」を使用しようとすると、 'comparable' 制約を持つ演算子を使用すると、エラーが発生する可能性があります。

'comparable' 制約

'comparable' 制約は、型が等価演算子 ('==' および '!=) をサポートしていることを検証します。 ')。これには、同等のフィールドを持つ配列や構造体など、マップ キーとして適格な型が含まれます。特に、インターフェイスは実行時パニックを引き起こす可能性があるため除外されます。

順序演算子と比較演算子

Go の仕様では、「比較演算子」という用語で順序演算子について言及していますが、それらは等価性 ('==' と '!=') と比較演算子を区別しています。順序付け演算子 ('<'、'>'、'<='、'>=')。 'ordered.'

Go バージョンとソリューション

Go 1.21

  • 標準ライブラリから 'cmp.Ordered' を導入します。

1.18 に移動1.20

  • 実験的な 'golang.org/x/exp' パッケージの 'constraints.Ordered' を利用します。この制約は順序演算子をサポートしており、整数、浮動小数点数、および浮動小数点数が含まれます。 strings.

例:

import "golang.org/x/exp/constraints"

func getBiggerNumber[T constraints.Ordered](t1, t2 T) T {
    if t1 > t2 {
        return t1
    }
    return t2
}
ログイン後にコピー

適切な制約を選択することで、ジェネリック関数での型の互換性と正しい比較動作が保証されます。

以上がGo ジェネリックで順序演算子 (<、>、<=、>=) を安全に使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート