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