Maison  >  Article  >  développement back-end  >  Comment vérifier élégamment l’égalité de trois valeurs en Go ?

Comment vérifier élégamment l’égalité de trois valeurs en Go ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-04 06:12:29374parcourir

How to Elegantly Check Equality of Three Values in Go?

Alternatives à la comparaison chaînée pour l'égalité des valeurs

Lors de la comparaison de trois valeurs pour l'égalité, l'utilisation de if a == b == c entraîne une erreur de compilation due à des incompatibilités de types. Alors que si a == b && a == c est une alternative valable, elle peut sembler lourde. Cet article explore plusieurs méthodes créatives pour vérifier avec élégance l'égalité de trois valeurs.

Option 1 : Carter en tant qu'ensemble

En créant une carte avec les trois valeurs comme clés , nous pouvons vérifier si toutes les valeurs sont égales en vérifiant si la longueur de la carte est 1. Cette approche est flexible et peut accueillir plus de trois valeurs.

<code class="go">if len(map[interface{}]int{a: 0, b: 0, c: 0}) == 1 {
    fmt.Println("Map set: all 3 are equal")
}</code>

Option 2 : Tableaux

Les tableaux dans Go sont comparables, contrairement aux tranches. En comparant les tableaux avec les éléments correspondants des trois valeurs, nous pouvons vérifier l'égalité.

<code class="go">if [2]interface{}{a, b} == [2]interface{}{b, c} {
    fmt.Println("Arrays: all 3 are equal")
}</code>

Option 3 : Carte délicate

Nous pouvons exploiter le comportement d'une carte pour effectuez une seule comparaison de b == c, puis accédez à la valeur résultante pour b comme proxy de l'égalité globale des trois valeurs.

<code class="go">if map[interface{}]bool{a: b == c}[b] {
    fmt.Println("Tricky map: all 3 are equal")
}</code>

Option 4 : structures anonymes

Les valeurs de structure dans Go sont également comparables. Nous pouvons créer une structure anonyme avec deux champs, comparer les structures contenant les trois valeurs et vérifier l'égalité.

<code class="go">if struct{ a, b interface{} }{a, b} == struct{ a, b interface{} }{b, c} {
    fmt.Println("Anon structs: all 3 are equal")
}</code>

Option 5 : Fonction d'assistance

Nous peut définir une fonction d'assistance pour vérifier l'égalité d'un nombre arbitraire de valeurs en les comparant itérativement à une valeur de départ.

<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>

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn