Maison >développement back-end >Golang >Pourquoi ne puis-je pas utiliser de récepteurs de pointeurs sur les entrées de carte dans Go ?
Déréférencer un index de carte dans Go
Dans un programme Go, les index de carte ne peuvent pas être référencés directement. Ce problème se pose en raison de la nature dynamique des cartes, dans laquelle l'adresse d'une entrée peut changer au cours de la croissance ou du rétrécissement de la carte. Par conséquent, tenter d'appeler des méthodes de récepteur de pointeur sur des entrées de carte entraîne l'erreur suivante :
cannot call pointer method on f[0] cannot take the address of f[0]
Pour résoudre ce problème, supprimez simplement l'astérisque (*) du récepteur de méthode dans la méthode problématique :
func (c Cashier) Buy(itemNum int){ item, pass := c.items[itemNum] if pass{ if item.amount == 1{ delete(c.items, itemNum) } else{ item.amount-- c.items[itemNum] = item } c.cash++ } }
Ce faisant, la méthode n'est plus un récepteur de pointeur, ce qui lui permet d'être appelée sur les entrées de la carte sans problème.
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!