Maison >développement back-end >Golang >Comment puis-je vérifier si trois valeurs sont égales dans Go ?
Vérifier l'égalité de trois valeurs avec élégance
Alors que l'approche traditionnelle avec if a == b == c entraîne une erreur de syntaxe, il existe des méthodes alternatives pour déterminer si trois valeurs sont égales.
Utiliser une approche claire et concise
La solution la plus simple reste :
<code class="go">if a == b && a == c { fmt.Println("All 3 are equal") }</code>
Ceci La solution est simple et efficace, effectuant des comparaisons par paire.
Explorer des solutions créatives
Utiliser une carte en tant qu'ensemble :
La fonction len() renvoie le nombre de clés uniques dans une carte. En utilisant une carte avec des clés d'interface{}, nous pouvons vérifier si toutes les valeurs sont égales en comparant la longueur de la carte à 1 :
<code class="go">if len(map[interface{}]int{a: 0, b: 0, c: 0}) == 1 { fmt.Println("All 3 are equal") }</code>
Avec des tableaux :
Les tableaux sont comparables, ce qui nous permet de comparer plusieurs éléments à la fois :
<code class="go">if [2]interface{}{a, b} == [2]interface{}{b, c} { fmt.Println("All 3 are equal") }</code>
Utilisation d'une carte délicate :
Nous pouvons indexer une carte avec une clé qui donne la valeur de comparaison :
<code class="go">if map[interface{}]bool{a: b == c}[b] { fmt.Println("All 3 are equal") }</code>
Avec les structures anonymes :
Les structures sont également comparables, nous pouvons donc créer une structure anonyme avec les valeurs et les comparer :
<code class="go">if struct{ a, b interface{} }{a, b} == struct{ a, b interface{} }{b, c} { fmt.Println("All 3 are equal") }</code>
Avec Slices :
Pour comparer les tranches, nous utilisons la fonction Reflect.DeepEqual() :
<code class="go">if reflect.DeepEqual([]interface{}{a, b}, []interface{}{b, c}) { fmt.Println("All 3 are equal") }</code>
Utilisation d'un Fonction d'assistance :
Nous pouvons définir une fonction d'assistance pour gérer n'importe quel nombre de valeurs :
<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!