Kopieren eine Map in Go

Jay Singh 23 August 2022
Kopieren eine Map in Go

Dieses Tutorial zeigt, wie Sie eine Map in Go kopieren.

Kopieren eine Map in Go

In Go ist eine Map eine Sammlung von ungeordneten Schlüssel-Wert-Paaren. Es ist beliebt, weil es schnelle Suchen und Werte ermöglicht, die mithilfe von Schlüsseln abgerufen, aktualisiert oder gelöscht werden können.

Da Mapn in Go Referenztypen sind, können Sie den Inhalt einer Map nicht umfassend replizieren, indem Sie eine Instanz einer anderen zuweisen. Sie können eine neue, leere Map erstellen und ihr dann mithilfe einer for-Range-Schleife die entsprechenden Schlüssel-Wert-Paare hinzufügen.

In Go ist es die einfachste und effizienteste Lösung für dieses Problem.

Die geklonte Map ist in dieser Beispielausgabe ein tiefer Klon, und das Hinzufügen zusätzlicher Teile wirkt sich nicht auf die ursprüngliche Map aus.

Beispiel 1:

package main

import "fmt"

func main() {
    dark := map[string]int{
        "Jay":  1,
        "Adam": 2,
        "Eve":  3,
    }

    // copy a map
    darkch := make(map[string]int)
    for k, v := range dark {
        darkch[k] = v
    }
    darkch["Jonas"] = 4

    fmt.Println("Original")
    fmt.Println(dark)

    fmt.Println("Copied")
    fmt.Println(darkch)
}

Ausgabe:

Original
map[Adam:2 Eve:3 Jay:1]
Copied
map[Adam:2 Eve:3 Jay:1 Jonas:4]

In diesem Beispiel ordnen wir den Namen und die Rollennummer der ursprünglichen Map zu.

Beispiel 2:

package main

import (
    "fmt"
)

func main() {
    studs := map[string]int{
        "Jay":  1,
        "Adam": 2,
        "Eve":  3,
    }
    studs_tmp := make(map[string]int)
    for name, roll_no := range studs {
        studs_tmp[name] = roll_no
    }
    for name, roll_no := range studs_tmp {
        fmt.Println("Name: ", name, ", roll_no: ", roll_no)
    }
}

Ausgabe:

Name:  Jay , roll_no:  1
Name:  Adam , roll_no:  2
Name:  Eve , roll_no:  3

Verwandter Artikel - Go Map