ホームページ >バックエンド開発 >Golang >Go でインターフェース値の等価性チェックを実行するにはどうすればよいですか?{}

Go でインターフェース値の等価性チェックを実行するにはどうすればよいですか?{}

DDD
DDDオリジナル
2024-11-30 14:09:13738ブラウズ

How Can I Perform Equality Checks on interface{} Values in Go?

インターフェースによるインターフェースの等価性チェック{}

Go では、インターフェースのスライスに格納されている値の等価性チェックの複雑さを理解することが不可欠です。{}このガイドでは、カスタム構造体を含むさまざまな値の型が、指定されたインターフェース値に対して等しいことを検証するために利用できる方法について説明します。

比較可能な型のアプローチ

次のような比較可能な型を扱う場合。整数 (int) であるため、等価性チェックは簡単です。 == 演算子を使用して値を直接比較できます。

var v interface{} = 10

for i := 0; i < len(A); i++ {
  if A[i] == v {
    fmt.Println("Gotcha!")
    break
  }
}

カスタム構造体の同等性のチェック

同様に比較可能なカスタム構造体の場合、同等性チェックはフィールドの比較可能性に依存します。すべてのフィールドが比較可能な場合は、== を使用して構造体を直接比較できます。それ以外の場合は、独自の等価関数を定義する必要があります。

Go 仕様の洞察

Go プログラミング言語仕様を参照すると、インターフェイスの等価性が明確になります。

  • インターフェイスの値は次のとおりです。動的タイプが同一で動的値が等しい場合、または両方が等しい場合は比較可能です。 nil.
  • 非インターフェイス型がインターフェイス型を実装し、それらの値が等しい場合、非インターフェイス値とインターフェイス値は比較可能です。
  • すべてのフィールドが比較可能な場合、構造体の値は比較可能です。

プレイグラウンド デモンストレーション

次のプレイグラウンドさまざまな値タイプの等価性チェックを示します: https://play.golang.org/p/bgO1_V87v9k

結論

interface{} 値の等価性チェックを理解すると、Go プログラミングが簡素化されます。インターフェイスの値、構造体、および同等の型には、正確な結果を得るために従う必要がある特定の等価規則があることに注意してください。

以上がGo でインターフェース値の等価性チェックを実行するにはどうすればよいですか?{}の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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