Heim  >  Artikel  >  Backend-Entwicklung  >  Wie ändere ich nicht adressierbare Kartenwerte in Go?

Wie ändere ich nicht adressierbare Kartenwerte in Go?

DDD
DDDOriginal
2024-11-24 01:17:14303Durchsuche

How to Modify Non-Addressable Map Values in Go?

Ändern von Kartenwerten in Go: Behebung des Fehlers „Zuordnung zu Paar nicht möglich“

Wenn in Go die Fehlermeldung „kann Wenn Sie versuchen, ein Paar innerhalb einer Karte zu ändern, ist es wichtig, das Konzept der Adressierbarkeit zu verstehen.

Kartenwerte in Go sind nicht adressierbar, d. h. ihnen können keine Werte direkt mit dem Punktoperator (.) zugewiesen werden. Dies ist eine bewusste Entwurfsentscheidung, um Kartenimplementierungen die Flexibilität zu geben, Werte nach Bedarf im Speicher zu verschieben.

Um einen Kartenwert zu ändern, der nicht adressierbar ist, z. B. ein Paar, haben Sie zwei Möglichkeiten:

  1. Verwenden Sie einen Zeiger als Kartenwert: Indem Sie den Kartenwert als Zeiger auf das Paar definieren, können Sie den Wert durch Dereferenzierung ändern Zeiger mithilfe des Indirektionsoperators (*).
dict := make(map[string]*pair)
dict["xxoo"] = &pair{5.0, 2.0}
dict["xxoo"].b = 5.0
  1. Wert kopieren oder neu zuweisen: Anstatt den Kartenwert direkt zu ändern, können Sie eine Kopie erstellen, Ändern Sie es und weisen Sie es dann der Karte neu zu. Sie können den Wert auch vollständig durch einen neuen ersetzen.
// Copy and modify
dict := make(map[string]pair)
dict["xxoo"] = pair{5.0, 2.0}
p := dict["xxoo"]
p.b = 5.0
dict["xxoo"] = p

// Replace the value
dict["xxoo"] = pair{5.0, 5.0}

Wenn Sie die Adressierbarkeit verstehen und diese Techniken verwenden, können Sie Kartenwerte, die nicht direkt adressierbar sind, effektiv ändern.

Das obige ist der detaillierte Inhalt vonWie ändere ich nicht adressierbare Kartenwerte in Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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