„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Tiefes Kopieren von Go -Sprachkarten und Löschen der ursprünglichen Kartenmethoden

Tiefes Kopieren von Go -Sprachkarten und Löschen der ursprünglichen Kartenmethoden

Gepostet am 2025-04-19
Durchsuche:946

How to Deep Copy a Go Map and Clear the Original Without Affecting the Copy?

Das Problem mit Referenzen

Ihr Pseudo -Code veranschaulicht, dass Sie, wenn Sie ein Element von AMAP unter Verwendung von Delete (Amap, x), veranschaulichen, dass der Verweis auf dieses Element auch von Asuperm von Asuperm. Dies liegt daran, dass AsuperMap [y] einen Verweis auf AMAP enthält, und wenn Sie AMAP ändern (in diesem Fall durch Löschen eines Elements), ändern Sie tatsächlich die zugrunde liegenden Daten, auf die AsuperMap zeigt. Dies beinhaltet das Erstellen eines neuen Kartenobjekts mit seiner eigenen Kopie der Daten, anstatt einfach einen Verweis auf die ursprüngliche Karte zu halten. Sie können dies erreichen, indem Sie manuell eine für die Schleife erstellen, die die ursprüngliche Karte über die ursprüngliche Karte iteriert und jedes Schlüsselwert der neuen Karte fügt:

für k, v: = original-originalmap {{{oder Newmap [k] = v }

Auf diese Weise erstellen Sie eine neue Karte, die dieselben Daten wie die Originalkarte enthält, aber die beiden Karten sind separate Objekte mit ihren eigenen Kopien der Daten. Dazu können Sie die Reset -Funktion aus dem Container/Listenpaket verwenden: für etwas: = Bereichsfrüchte { AMAP: = make (map [string] astructruction) AsuperMap: = make (map [String] map [String] Astruction) für x: = Bereich etwas { amap [x] = adata AsuperMap [y] = amap löschen (amap, x) } // Deep Copy AMAP in Newmap Newmap: = make (map [String] Astruction) für k, v: = Bereich amap { Newmap [k] = v } // das ursprüngliche amap löschen container/list.reset (amap) // Speichern Sie die neue Karte SaveasuperMap (Newmap) }

Wenn Sie diese Schritte befolgen, können Sie erfolgreich eine assoziative Karte in Go erstellen, eine tiefe Kopie der Karte ausführen, um die Originaldaten zu erhalten, und die ursprüngliche Karte zu löschen, um neue Werte in der nächsten Schleife -Iteration zu akzeptieren.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3