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]
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++ } }
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!