ホームページ >バックエンド開発 >Golang >Go で 3 つの値が等しいかどうかをエレガントにチェックするには?

Go で 3 つの値が等しいかどうかをエレガントにチェックするには?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-03 21:33:29415ブラウズ

How to Check for Equality of Three Values in Go Elegantly?

3 つの値が等しいことをエレガントに判断する方法

Go では、3 つの値が等しいことを効率的に判断する方法はすぐにはわかりません。値、a、b、c。 if a == b == c という式は直感的に見えますが、コンパイル エラーが発生します。

従来のアプローチ

簡単なアプローチは、論理 AND ( &&) 値の各ペアを確認します: if a == b && a == c {...}。ただし、値の数が増えると、これは面倒で混乱する可能性があります。

クリエイティブなソリューション

従来のアプローチを超えて、Go の多用途性により、さまざまなクリエイティブなソリューションが可能になります。

  • セットとしてのマップ: マップを利用して値をキーとして保存します。すべての値が等しい場合、マップにはキーと値のペアが 1 つだけ含まれます。
  • 配列: 配列は比較可能なため、[2]interface{}{a, b} == [ 2]interface{}{b, c} は、a == b および b == c の場合に true と評価されます。
  • マップを使用したトリック: マップは、次の結果を保存するために使用できます。 b == c として、b に関連する値を確認します。 a == b の場合、結果は等しいことを示します。
  • 匿名構造体: 構造体は比較可能であり、struct{ a, b Interface{} }{a, b} = のような式が可能です。 = struct{ a, b Interface{} }{b, c}.
  • Reflect.DeepEqual: 直接比較できないスライスの場合、reflect.DeepEqual() 関数は次のようになります。
  • ヘルパー関数: AllEquals() などのヘルパー関数を作成して、複数の値の比較をカプセル化できます。

効率に関する注意

これらの創造的なソリューションの中には興味深いものもありますが、明確で簡潔な if a == b && a == c {...} アプローチが引き続き重要であることに注意することが重要です。 3 つの値が等しいことを確認するための最も効率的で簡単なオプションです。

以上がGo で 3 つの値が等しいかどうかをエレガントにチェックするには?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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