Heim > Backend-Entwicklung > Golang > Warum kann ich in einer Go-Map keine Zuweisung zu einem Strukturfeld vornehmen?

Warum kann ich in einer Go-Map keine Zuweisung zu einem Strukturfeld vornehmen?

DDD
Freigeben: 2024-11-27 13:13:13
Original
298 Leute haben es durchsucht

Why Can't I Assign to a Struct Field in a Go Map?

„Zuordnung zu Paar in einer Karte nicht möglich“: Erklärung der Adressierbarkeit

Wenn in Go versucht wird, ein Feld einer in einer Karte gespeicherten Struktur zu ändern, wird die Es kann der Fehler „kann nicht zugeordnet werden“ auftreten. Dieses Problem ergibt sich aus dem Konzept der Adressierbarkeit, das die direkte Zuweisung zu Werten innerhalb von Karten einschränkt.

Die Paarstruktur enthält zwei float64-Werte in einer Karte, z. B. dictionary["xxoo"].b. Das Zuweisen eines neuen Werts zu dictionary["xxoo"].b schlägt fehl, da der Kartenwert nicht adressierbar ist.

Go-Karten sind für das effiziente Speichern und Abrufen von Daten konzipiert. Um diese Effizienz aufrechtzuerhalten, sind Kartenwerte nicht adressierbar, was bedeutet, dass sie durch die Speicherverwaltung nach Bedarf verschoben werden können. Ohne Adressierbarkeit kann der Selektoroperator (.) nicht für den Zugriff auf das Strukturfeld zur direkten Zuweisung verwendet werden.

Um diese Einschränkung zu vermeiden, verwenden Sie einen Zeigertyp als Kartenwert. Durch die Definition eines Map[String]*Paares macht die Zeigerindirektion beispielsweise die Struktur adressierbar. Dies ermöglicht eine direkte Zuweisung, wie im folgenden Code zu sehen ist:

dict := make(map[string]*pair)
dict["xxoo"] = &pair{5.0, 2.0}
dict["xxoo"].b = 5.0
Nach dem Login kopieren

Alternativ können Sie bei Verwendung einer Karte mit Werttypen eine Kopie des vorhandenen Werts zuweisen oder einen komplett neuen Wert bereitstellen:

p := dict["xxoo"]
p.b = 5.0
dict["xxoo"] = p

// or
dict["xxoo"] = pair{5.0, 5.0}
Nach dem Login kopieren

Indem Sie die Adressierbarkeit verstehen und die entsprechende Lösung implementieren, können Sie in Go-Maps gespeicherte Strukturen effektiv manipulieren.

Das obige ist der detaillierte Inhalt vonWarum kann ich in einer Go-Map keine Zuweisung zu einem Strukturfeld vornehmen?. 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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage