Combinar dos mapas en Golang
-
Use el método
Copiar
para fusionar dos mapas en Golang - Método definido por el usuario para fusionar dos mapas en Golang
Este tutorial demuestra cómo fusionar dos mapas en Golang.
Golang no proporciona ninguna funcionalidad integrada para fusionar los mapas, pero esto se puede lograr utilizando el método Copiar
o siguiendo el proceso correspondiente. Probemos ambos métodos.
Use el método Copiar
para fusionar dos mapas en Golang
Al usar el método Copiar
, podemos copiar el contenido de un mapa a otro mapa mediante el cual podemos lograr la funcionalidad de combinación para mapas. El método Copiar
se introdujo en la versión 1.18 de Golang.
El método Copiar
toma dos parámetros, que son mapas. El contenido del segundo mapa se copiará en el primer mapa.
Probemos un ejemplo:
package main
import (
"fmt"
"golang.org/x/exp/maps"
)
func main() {
map1 := map[string]int{
"DelftstackOne": 10,
"DelftstackTwo": 20,
"DelftstackThree": 30,
}
map2 := map[string]int{
"DelftstackTwo": 20,
"DelftstackThree": 30,
"DelftstackFour": 40,
"DelftstackFive": 50,
}
// Print the map before merging
fmt.Println("The First Map: ", map1)
fmt.Println("The Second Map: ", map2)
maps.Copy(map1, map2)
fmt.Println("The merged Map is: ", map1)
}
El código anterior fusionará dos mapas basados en la unión utilizando el método Copiar
. La única desventaja del método Copiar
es que modifica nuestro primer mapa.
Ver la salida:
The First Map: map[DelftstackOne:10 DelftstackThree:30 DelftstackTwo:20]
The Second Map: map[DelftstackFive:50 DelftstackFour:40 DelftstackThree:30 DelftstackTwo:20]
The merged Map is: map[DelftstackFive:50 DelftstackFour:40 DelftstackOne:10 DelftstackThree:30 DelftstackTwo:20]
Program exited.
Método definido por el usuario para fusionar dos mapas en Golang
Podemos diseñar un método que combine dos mapas basados en una unión, lo que excluirá la entrada con el mismo valor. Aquí hay un ejemplo:
package main
import "fmt"
type Delftstack struct {
Id int
Name string
Salary int
}
type EmployeeMaps map[int]Delftstack
func MapUnion(map1, map2 EmployeeMaps) EmployeeMaps {
for x, y := range map1 {
if m, n := map2[x]; n {
y.Salary += m.Salary
}
map2[x] = y
}
return map2
}
func main() {
map1 := EmployeeMaps{2: {30, "Jack", 2000}, 5: {50, "Samuel", 1500}, 6: {60, "John", 1800}}
map2 := EmployeeMaps{1: {10, "Pamela", 3000}, 2: {20, "Connor", 2000}, 3: {30, "Jack", 2000}, 4: {40, "Joe", 4000}}
result := MapUnion(map2, map1)
fmt.Println(result)
}
El código anterior fusiona dos mapas al excluir la entrada con el mismo valor, básicamente la unión de mapas. El código primero crea una estructura y mapas con claves int y valores de estructura; luego, utiliza el método definido por el usuario MapUnion
para fusionarlos en función de su unión de valores.
Ver la salida:
map[1:{10 Pamela 3000} 2:{20 Connor 4000} 3:{30 Jack 2000} 4:{40 Joe 4000} 5:{50 Samuel 1500} 6:{60 John 1800}]
Program exited.
Sheeraz is a Doctorate fellow in Computer Science at Northwestern Polytechnical University, Xian, China. He has 7 years of Software Development experience in AI, Web, Database, and Desktop technologies. He writes tutorials in Java, PHP, Python, GoLang, R, etc., to help beginners learn the field of Computer Science.
LinkedIn Facebook