Maison >développement back-end >Golang >Pourquoi Go lance-t-il « Opération invalide – Type Map[key]value ne prend pas en charge l'indexation » ?
Opération invalide : indexation perplexe du pointeur de carte de Go
Lors de la manipulation de cartes dans Go, on peut rencontrer le message d'erreur : "opération invalide - tapez map[key]value ne prend pas en charge l'indexation." Cette erreur se produit lors de la tentative d'indexation d'un pointeur de carte (map[key]value) au lieu de la valeur de la carte elle-même. Contrairement à la norme avec les structures, le déréférencement n'est pas automatisé pour les cartes.
La clé pour résoudre ce problème est de déréférencer le pointeur pour accéder à la valeur de la carte avant d'effectuer les opérations d'indexation. Prenons l'exemple suivant :
func (b *Balance) Add(amount Amount) *Balance { // Dereference the pointer to access the map current, ok := (*b)[amount.Currency] if ok { (*b)[amount.Currency] = current + amount.Value } else { (*b)[amount.Currency] = amount.Value } return b }
Dans ce scénario, la "map[key]value" est déréférencée à l'aide de l'opérateur "" pour révéler la valeur réelle de la carte avant l'indexation.
La gestion du pointeur de Go pour les cartes diffère de celle des structures. Pour éviter une copie excessive, il n'est pas nécessaire de définir des fonctions de récepteur prenant en charge des pointeurs de carte. Au lieu de cela, transmettez directement la valeur de la carte, comme démontré dans l'extrait de code d'origine.
En comprenant les nuances subtiles des pointeurs de carte dans Go, les programmeurs peuvent résoudre efficacement ce message d'erreur énigmatique et manipuler les cartes en toute confiance sans avoir besoin de manipulations inutiles. valeur de copie.
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!