Maison >développement back-end >Golang >Comment puis-je vérifier efficacement l'existence d'une clé sur plusieurs cartes Go ?
Vérification efficace de l'existence des clés dans plusieurs cartes
Dans Go, il est courant de travailler avec des cartes, qui sont des structures de données efficaces pour récupérer les clés -paires de valeurs. Cependant, le code fourni par le développeur démontre la nécessité de vérifier l’existence d’une clé dans deux cartes distinctes. La question reste de savoir si ce processus peut être rendu plus concis.
Comme expliqué dans la réponse, l'utilisation du formulaire spécial v, ok := m[k] dans Go pour vérifier l'existence d'une clé est limitée aux affectations à une seule variable. . Par conséquent, il n'est pas possible de combiner les deux vérifications en une seule condition if à l'aide de ce formulaire.
Cependant, il existe des approches alternatives pour obtenir la fonctionnalité souhaitée :
Assignation de tuple :
Si le type de valeur de la carte est un type d'interface et que vous pouvez vous assurer que la valeur nulle n'est pas utilisée, vous pouvez effectuer une affectation de tuple en utilisant deux expressions d'index :
if v1, v2 := m1["aaa"], m2["aaa"]; v1 != nil && v2 != nil { // ... }
Fonction d'assistance :
Une fonction d'assistance peut être créée pour effectuer la vérification de l'existence de la clé dans les deux cartes et renvoyer les résultats :
func idx(m1, m2 map[string]interface{}, k string) ( v1, v2 interface{}, ok1, ok2 bool) { v1, ok1 = m1[k] v2, ok2 = m2[k] return }
Cette fonction peut ensuite être utilisée comme suit :
if v1, v2, ok1, ok2 := idx(m1, m2, "aaa"); ok1 && ok2 { // ... }
Ces approches permettent une vérification concise et efficace de l'existence d'une clé dans plusieurs cartes au sein d'une seule instruction conditionnelle.
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!