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 ?

Pourquoi ne puis-je pas utiliser de récepteurs de pointeurs sur les entrées de carte dans Go ?

Barbara Streisand
Libérer: 2024-12-21 02:00:14
original
263 Les gens l'ont consulté

Why Can't I Use Pointer Receivers on Map Entries in 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]
Copier après la connexion

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++
    }
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal