3 つの値の等価性をエレガントにチェックする
if a == b == c を使用した従来のアプローチでは構文エラーが発生しますが、は、3 つの値が等しいかどうかを判断するための代替方法です。
明確で簡潔なアプローチの使用
最も単純な解決策は残ります:
<code class="go">if a == b && a == c { fmt.Println("All 3 are equal") }</code>
これソリューションは簡単かつ効率的で、ペアごとに比較できます。
創造的なソリューションの探索
マップをセットとして使用する:
len() 関数は、マップ内の一意のキーの数を返します。 Interface{} キーを持つマップを使用すると、マップの長さを 1:
<code class="go">if len(map[interface{}]int{a: 0, b: 0, c: 0}) == 1 { fmt.Println("All 3 are equal") }</code>
と比較することで、すべての値が等しいかどうかを確認できます。配列の場合:
配列は比較できるため、複数の要素を一度に比較できます:
<code class="go">if [2]interface{}{a, b} == [2]interface{}{b, c} { fmt.Println("All 3 are equal") }</code>
トリッキーなマップの使用:
結果となるキーを使用してマップにインデックスを付けることができます。比較値:
<code class="go">if map[interface{}]bool{a: b == c}[b] { fmt.Println("All 3 are equal") }</code>
匿名構造体の場合:
構造体も比較できるため、値を使用して匿名構造体を作成し、それらを比較できます:
<code class="go">if struct{ a, b interface{} }{a, b} == struct{ a, b interface{} }{b, c} { fmt.Println("All 3 are equal") }</code>
スライスの場合:
スライスを比較するには、reflect.DeepEqual() 関数を利用します。
<code class="go">if reflect.DeepEqual([]interface{}{a, b}, []interface{}{b, c}) { fmt.Println("All 3 are equal") }</code>
ヘルパー関数:
任意の数の値を処理するヘルパー関数を定義できます:
<code class="go">func AllEquals(v ...interface{}) bool { if len(v) > 1 { a := v[0] for _, s := range v { if a != s { return false } } } return true }</code>
以上がGo で 3 つの値が等しいかどうかを確認するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。