Maison > développement back-end > Golang > 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
Libérer: 2024-11-04 03:57:01
original
597 Les gens l'ont consulté

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

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

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

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

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

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

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