Maison > développement back-end > Golang > Comment comparer de manière fiable des cartes dans Go ?

Comment comparer de manière fiable des cartes dans Go ?

Linda Hamilton
Libérer: 2024-11-19 15:04:02
original
545 Les gens l'ont consulté

How to Reliably Compare Maps in Go?

Comparaison de cartes dans Go

Lors de l'écriture de tests basés sur des tables dans Go, les développeurs rencontrent souvent le besoin de comparer des cartes. Une approche courante consiste à convertir les mappages en chaînes, puis à comparer les chaînes, en partant de l'hypothèse que les mappages équivalents ont les mêmes représentations sous forme de chaîne. Cependant, cette approche a des limites.

Comparaison basée sur Reflect avec Reflect.DeepEqual

Une façon plus fiable et idiomatique de comparer des cartes consiste à utiliser le package de réflexion de Go. La fonction Reflect.DeepEqual peut être utilisée pour comparer en profondeur deux valeurs, y compris des cartes. Il garantit que :

  • Les deux cartes ne sont pas nulles.
  • Les cartes ont la même longueur.
  • Les cartes ont le même ensemble de (clé, valeur) paires.

Exemple de code pour la comparaison de cartes

Considérez l'exemple de code suivant pour comparer des cartes à l'aide de Reflect.DeepEqual :

import (
    "fmt"
    "reflect"
)

func main() {
    m1 := map[string]int{"foo": 1, "bar": 2}
    m2 := map[string]int{"foo": 1, "bar": 2}

    eq := reflect.DeepEqual(m1, m2)
    if eq {
        fmt.Println("The maps are equal.")
    } else {
        fmt.Println("The maps are not equal.")
    }
}
Copier après la connexion

Avantages de l'utilisation de Reflect.DeepEqual

L'avantage de l'utilisation de Reflect.DeepEqual est qu'il fournit un moyen robuste et générique de comparer des cartes de tout type (par exemple, map[string]int, map [chaîne]chaîne, etc.). Il gère les complexités de la comparaison de cartes en interne, éliminant ainsi le besoin de boucles personnalisées sujettes aux erreurs.

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!

source:php.cn
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