Copiar un map en Go

Jay Singh 23 agosto 2022
Copiar un map en Go

Este tutorial demuestra cómo copiar un map en Go.

Copiar un map en Go

En Go, un map es una colección de pares clave-valor no ordenados. Es popular porque permite búsquedas rápidas y valores que se pueden recuperar, actualizar o eliminar usando claves.

Debido a que los maps en Go son tipos de referencia, no puede replicar en profundidad el contenido de un map asignando una instancia a otra. Puede crear un nuevo map vacío y luego agregarle los pares clave-valor apropiados mediante un bucle for range.

En Go, es la solución más sencilla y eficiente a este problema.

El map clonado es un clon profundo en este resultado de ejemplo, y agregar piezas adicionales no afecta el map original.

Ejemplo 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)
}

Producción :

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

Asignamos el nombre y el número de rollo al map original en este ejemplo.

Ejemplo 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)
    }
}

Producción :

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

Artículo relacionado - Go Map