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?

Patricia Arquette
Freigeben: 2024-11-13 17:00:02
Original
665 Leute haben es durchsucht

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

Zuweisung zu Strukturfeldern in der Karte

Der Fehler „Zuweisung zu Strukturfeld in einer Karte nicht möglich“ tritt auf, wenn versucht wird, ein Feld von zu ändern eine Struktur, die in einer Karte gespeichert ist. Diese Einschränkung ergibt sich aus der Unveränderlichkeit von Kartenschlüsseln und -werten in Go.

Im bereitgestellten Beispiel erstellt snapshots := make(map[string] Snapshot, 1) eine Karte mit Schlüsseln vom Typ string und Werten vom Typ Snapshot, wobei Snapshot eine Struktur ist. Um den Benutzer-Slice innerhalb eines Snapshot-Werts zu ändern, müssen Sie das richtige Verfahren befolgen.

Der folgende Ansatz stellt sicher, dass der Benutzer-Slice korrekt geändert wird:

func main() {
  snapshots := make(map[string]Snapshot, 1)
  snapshots["test"] = Snapshot{
    Key:   "testVal",
    Users: make([]Users, 0),
  }
  
  // Get a copy of the 'Users' slice
  users := snapshots["test"].Users

  // Append user to the copy
  users = append(users, user)

  // Reassign the map entry
  snapshots["test"].Users = users
}
Nach dem Login kopieren

Indem Sie eine Kopie des ' Benutzer-Slice können Sie ändern und die geänderte Kopie dann dem Karteneintrag neu zuweisen. Dieser Ansatz berücksichtigt die Unveränderlichkeit der Karte.

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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage