ホームページ >バックエンド開発 >Golang >Go でカスタム型の比較機能を実装するにはどうすればよいですか?

Go でカスタム型の比較機能を実装するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-04 05:53:01779ブラウズ

How do you implement comparison functionality for custom types in Go?

Go の比較可能なインターフェイス

Go には、比較関数を実装するために型を必要とする組み込みインターフェイスはありません。ただし、独自のインターフェイスを作成して、同等の型を定義できます。

比較可能なインターフェイスの定義

一般的なアプローチは、次のメソッドを使用してインターフェイスを作成することです:

type Comparable[T comparable] interface {
    Compare(other T) int
}

ここで、T はインターフェイスを実装する型であり、int は比較結果 (-1, 0, 1) を表します。

インターフェイスの実装

カスタム型が同等であると見なされるには、次のようになります。 Comparable インターフェイスを実装する必要があります:

type MyType struct {
    // ...
}

func (t MyType) Compare(other MyType) int {
    // ...
}

Comparable インターフェイスの使用

Comparable インターフェイスを定義したら、それを使用して型が比較可能かどうかを確認できます:

func IsComparable(i interface{}) bool {
    _, ok := i.(Comparable[i])
    return ok
}

Less 関数を使用して、2 つの比較可能な値を比較することもできます:

func Less(a, b Comparable[T]) bool {
    return a.Compare(b) < 0
}

以上がGo でカスタム型の比較機能を実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。