Maison  >  Article  >  développement back-end  >  Comment puis-je vérifier si trois valeurs sont égales dans Go ?

Comment puis-je vérifier si trois valeurs sont égales dans Go ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-04 03:57:01447parcourir

How Can I Check if Three Values are Equal in 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!

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