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

Go でインターフェイスの値が等しいかどうかを比較するにはどうすればよいですか?{}

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-05 21:24:11716ブラウズ

How Can We Compare interface{} Values for Equality in Go?

インターフェースの等価性を確認できますか?{}?

Go では、特にインターフェースを扱う場合、2 つの値が等しいかどうかを比較する方法を知ることが不可欠です。{

次のコード スニペットを考えてみましょう:

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

このコードは検索を目的としています。インターフェースのスライス内の特定の値の場合。{}ただし、カスタム構造体を扱う場合は、インターフェイスとして保存されている構造体の値の等しいかどうかをどのように判断すればよいのかという疑問が生じます。

コメントで共有された洞察のおかげで、ここでは、次の内容に基づいて説明します。 Go プログラミング言語仕様:

インターフェース{}の等価性

  • 2 つのインターフェース{} 値は等しいそれらが同じ動的な型と値を持つ場合、または両方の値が nil である場合。
  • X 型の値 x と、interface{} 型の値 t については、型の値が同じであれば比較可能です。 X は同等であり、X は T を実装します。t の動的型が X で、t の動的値が x と等しい場合、これらは等しいです。

Struct等価

  • 構造体のすべてのフィールドが比較可能な場合、構造体の値は比較可能です。
  • 対応する空白以外のフィールドが等しい場合、2 つの構造体の値は等しいです。

簡単に言うと、インターフェイスを扱うか構造体を扱うかに関係なく、Go での等価性のチェックは簡単です。{}ただし、混乱が生じた場合には、平等がどのように機能するかを実験し理解するための貴重なツールとして Go プレイグラウンドが利用できることは注目に値します。

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

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