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 si la condition à 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 à l'aide de deux index expressions :
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 alors ê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.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3