Wie kopiere ich eine Karte?
Ich versuche den Inhalt einer Karte zu kopieren (amap
) in einem anderen (aSuperMap
) und dann klaramap
damit es bei der nächsten Iteration / Schleife neue Werte annehmen kann. Das Problem ist, dass Sie die Karte nicht löschen könnenohne seine Referenz zu löschen auch in der supermap. Hier ist ein Pseudocode.
for something := range fruits{
aMap := make(map[string]aStruct)
aSuperMap := make(map[string]map[string]aStruct)
for x := range something{
aMap[x] = aData
aSuperMap[y] = aMap
delete(aMap, x)
}
//save aSuperMap
saveASuperMap(something)
}
Ich habe auch ein paar dynamische Sachen ausprobiert, aber es wird offensichtlich ein Fehler ausgegeben (kann nicht nil zugewiesen werden)
aSuperMap[y][x] = aData
Die Frage ist, wie kann ich eine assoziative Karte erstellen? In PHP verwende ich einfach aSuperMap [y] [x] = aData. Es scheint, dass Golang keine offensichtliche Methode hat. Wenn ich löschedelete(aMap, x)
Die Referenz aus der Superkarte wird ebenfalls gelöscht. Wenn ich es nicht lösche, endet die Supermap mit doppelten Daten. Grundsätzlich wird es auf jeder SchleifeaMap
mit dem neuen Wert plus alle alten Werte.