Maison > développement back-end > Golang > le corps du texte

Comment tester l'équivalence des cartes dans Golang ?

Mary-Kate Olsen
Libérer: 2024-11-17 06:31:03
original
720 Les gens l'ont consulté

How Do You Test the Equivalence of Maps in Golang?

Test d'équivalence des cartes en Golang

Dans les tests basés sur des tables, il est crucial d'affirmer l'égalité de deux cartes. Bien que les implémentations personnalisées et les conversions de chaînes puissent être fastidieuses, Golang propose une solution intégrée.

Utilisation de Reflect.DeepEqual

Le package Reflect fournit la fonction DeepEqual qui compare de manière récursive les valeurs, y compris les cartes. Il vérifie :

  • Valeurs nulles
  • Longueurs des cartes
  • Paires clé-valeur
import "reflect"

eq := reflect.DeepEqual(m1, m2)
Copier après la connexion

Cette comparaison complète garantit une égalité précise tester des cartes de tout type (par exemple, map[string]bool, map[struct{}]interface{}). Notez qu'il nécessite des types d'interface comme arguments.

Détails d'implémentation

Le code source de Reflect. Le cas Map de DeepEqual révèle :

if p, ok := v1.(reflect.Map); ok && q, ok := v2.(reflect.Map) {
    if p.Len() != q.Len() {
        return false
    }
    for _, k := range p.Keys() {
        if !q.Has(k) || !DeepEqual(p.Elem(k).Interface(), q.Elem(k).Interface()) {
            return false
        }
    }
    return true
}
Copier après la connexion

Il vérifie les valeurs nulles et les longueurs de carte. et des paires clé-valeur. En passant des types d'interface, il garantit la compatibilité avec diverses implémentations de cartes.

Conclusion

Utiliser Reflect.DeepEqual pour tester l'égalité des cartes dans Golang est une solution idiomatique et efficace. Il gère tous les cas extrêmes et garantit une comparaison précise pour tout type de carte. Cela simplifie les tests basés sur des tables et améliore la fiabilité de votre 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!

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