Führen Sie zwei Karten in Golang zusammen
-
Verwenden Sie die
copy
-Methode, um zwei Karten in Golang zusammenzuführen - Benutzerdefinierte Methode zum Zusammenführen von zwei Karten in Golang
Dieses Tutorial zeigt, wie Sie zwei Karten in Golang zusammenführen.
Golang bietet keine integrierte Funktion zum Zusammenführen der Karten, dies kann jedoch mit der Methode copy
oder nach dem entsprechenden Prozess erreicht werden. Versuchen wir beide Methoden.
Verwenden Sie die copy
-Methode, um zwei Karten in Golang zusammenzuführen
Durch die Verwendung der Methode copy
können wir den Inhalt einer Karte auf eine andere Karte kopieren, wodurch wir die Zusammenführungsfunktion für Karten erreichen können. Die Methode copy
wurde in der Golang-Version 1.18 eingeführt.
Die Copy
-Methode nimmt zwei Parameter, die Maps sind. Der Inhalt der zweiten Karte wird in die erste Karte kopiert.
Versuchen wir es an einem Beispiel:
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)
}
Der obige Code wird zwei Karten basierend auf der Vereinigung mit der Methode copy
zusammenführen. Der einzige Nachteil der Methode copy
ist, dass sie unsere erste Karte modifiziert.
Siehe die Ausgabe:
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.
Benutzerdefinierte Methode zum Zusammenführen von zwei Karten in Golang
Wir können eine Methode entwerfen, die zwei Karten basierend auf einer Vereinigung zusammenführt, wodurch der Eintrag mit demselben Wert ausgeschlossen wird. Hier ist ein Beispiel:
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)
}
Der obige Code führt zwei Karten zusammen, indem er den Eintrag mit demselben Wert ausschließt, im Grunde die Vereinigung von Karten. Der Code erstellt zuerst eine Struktur und bildet sie mit int-Schlüsseln und Strukturwerten ab; dann verwendet es die benutzerdefinierte Methode MapUnion
, um sie basierend auf ihrer Vereinigung von Werten zusammenzuführen.
Siehe die Ausgabe:
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