Heim > Backend-Entwicklung > Golang > Warum kann ich in Go keine Zeigerempfänger für Karteneinträge verwenden?

Warum kann ich in Go keine Zeigerempfänger für Karteneinträge verwenden?

Barbara Streisand
Freigeben: 2024-12-21 02:00:14
Original
225 Leute haben es durchsucht

Why Can't I Use Pointer Receivers on Map Entries in Go?

Dereferenzieren eines Kartenindex in Go

Innerhalb eines Go-Programms können Kartenindizes nicht direkt referenziert werden. Dieses Problem entsteht aufgrund der dynamischen Natur von Karten, bei denen sich die Adresse eines Eintrags während der Kartengröße oder -schrumpfung ändern kann. Daher führt der Versuch, Zeigerempfängermethoden für Karteneinträge aufzurufen, zu folgendem Fehler:

cannot call pointer method on f[0]
cannot take the address of f[0]
Nach dem Login kopieren

Um dieses Problem zu beheben, entfernen Sie einfach das Sternchen (*) vom Methodenempfänger in der problematischen Methode:

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++
    }
}
Nach dem Login kopieren

Auf diese Weise ist die Methode kein Zeigerempfänger mehr, sodass sie problemlos für Karteneinträge aufgerufen werden kann.

Das obige ist der detaillierte Inhalt vonWarum kann ich in Go keine Zeigerempfänger für Karteneinträge verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage