Maison > développement back-end > Golang > 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
Libérer: 2024-11-04 06:12:29
original
507 Les gens l'ont consulté

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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 de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal