ホームページ  >  記事  >  バックエンド開発  >  Go で 3 つの値が等しいかどうかを確認するにはどうすればよいですか?

Go で 3 つの値が等しいかどうかを確認するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-04 03:57:01447ブラウズ

How Can I Check if Three Values are Equal in Go?

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 サイトの他の関連記事を参照してください。

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