Heim > Backend-Entwicklung > Golang > Wie kann man in Go effizient tiefe Kopien von Karten erstellen?

Wie kann man in Go effizient tiefe Kopien von Karten erstellen?

DDD
Freigeben: 2024-11-29 21:29:11
Original
997 Leute haben es durchsucht

How to Efficiently Create Deep Copies of Maps in Go?

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
}
Nach dem Login kopieren

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!

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