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 :
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.") } }
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!