Kopieren von Karten in Go erstellen: Gibt es eine integrierte Funktion?
Karten in Go sind eine vielseitige Datenstruktur, aber die Das Fehlen einer integrierten Funktion zum Erstellen von Kopien kann eine Hürde darstellen. Glücklicherweise können Ihnen mehrere Ansätze dabei helfen, dies zu erreichen.
Verwendung des Pakets „encoding/gob“
Für eine allgemeine Lösung bietet das Paket „encoding/gob“ eine robuste Möglichkeit zur Erstellung tiefe Kopien komplexer Datenstrukturen, einschließlich Karten. Indem Sie die ursprüngliche Karte kodieren und sie dann in eine neue Variable dekodieren, erstellen Sie eine Kopie, die auf einen anderen Speicherort verweist.
package main import ( "bytes" "encoding/gob" "fmt" "log" ) func main() { ori := map[string]int{ "key": 3, "clef": 5, } var mod bytes.Buffer enc := gob.NewEncoder(&mod) dec := gob.NewDecoder(&mod) fmt.Println("ori:", ori) // key:3 clef:5 err := enc.Encode(ori) if err != nil { log.Fatal("encode error:", err) } var cpy map[string]int err = dec.Decode(&cpy) if err != nil { log.Fatal("decode error:", err) } fmt.Println("cpy:", cpy) // key:3 clef:5 cpy["key"] = 2 fmt.Println("cpy:", cpy) // key:2 clef:5 fmt.Println("ori:", ori) // key:3 clef:5 }
Durch die Verwendung von „encoding/gob“ können Sie tiefe Kopien erstellen, die sogar verschachtelte Strukturen berücksichtigen , wie Slices von Karten oder Karten, die Slices enthalten.
Andere Überlegungen
Während Encoding/gob a bietet Obwohl es sich um eine allgemeine Lösung handelt, ist sie möglicherweise nicht für alle Fälle geeignet. Wenn Ihre Karten relativ einfach sind, können Sie erwägen, eine benutzerdefinierte Funktion zum Erstellen flacher Kopien zu schreiben. Darüber hinaus gibt es Bibliotheken von Drittanbietern, die Funktionen zum Kopieren von Karten bieten.
Bedenken Sie, dass Kopien in Go immer tief sind, was bedeutet, dass sie neue Instanzen der Daten erstellen, im Gegensatz zu flachen Kopien, die nur Verweise auf das Original erstellen. Dies ist ein wichtiger Unterschied, der bei der Bearbeitung von Karten berücksichtigt werden muss.
Das obige ist der detaillierte Inhalt vonWie kann man in Go effizient tiefe Kopien von Karten erstellen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!