Heim >Backend-Entwicklung >Golang >Wie erstelle ich tiefe Kopien von Karten in Go?

Wie erstelle ich tiefe Kopien von Karten in Go?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-29 02:01:14224Durchsuche

How to Create Deep Copies of Maps in Go?

Erstellen tiefer Kopien von Karten in Go

Sie können zwar manuell eine Kopie einer Karte erstellen, es kann jedoch bequemer sein, erstellte Karten zu verwenden -in Funktionen oder Bibliotheken.

Eingebaut Funktionen

Leider gibt es in Go keine integrierte Funktion speziell zum Erstellen von Kopien beliebiger Karten.

Bibliotheken und Pakete

  • encoding/gob: Mit dieser Bibliothek können Sie beliebige Daten kodieren und dekodieren Strukturen, einschließlich Karten. Indem Sie die Originalkarte kodieren und in eine neue Variable dekodieren, können Sie eine tiefe Kopie erstellen.
import (
    "bytes"
    "encoding/gob"
    "fmt"
)

func main() {
    ori := map[string]int{
        "key":  3,
        "clef": 5,
    }

    // Encode the original map
    var mod bytes.Buffer
    enc := gob.NewEncoder(&mod)
    err := enc.Encode(ori)
    if err != nil {
        fmt.Println("Failed to encode map:", err)
        return
    }

    // Decode the encoded map into a new variable (deep copy)
    var cpy map[string]int
    dec := gob.NewDecoder(&mod)
    err = dec.Decode(&cpy)
    if err != nil {
        fmt.Println("Failed to decode map:", err)
        return
    }

    // Modify the copied map to demonstrate they are independent
    cpy["key"] = 2
    fmt.Println("Original map:", ori)
    fmt.Println("Copied map:", cpy)
}

Mit einem dieser Ansätze können Sie bequem tiefe Kopien von Karten in Go erstellen.

Das obige ist der detaillierte Inhalt vonWie erstelle ich tiefe Kopien von Karten in Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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