Maison > Article > développement back-end > Comment vérifier élégamment l’égalité de trois valeurs en 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!