Führen Sie zwei Karten in Golang zusammen

Sheeraz Gul 20 Juni 2023
  1. Verwenden Sie die copy-Methode, um zwei Karten in Golang zusammenzuführen
  2. Benutzerdefinierte Methode zum Zusammenführen von zwei Karten in Golang
Führen Sie zwei Karten in Golang zusammen

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 Gul avatar Sheeraz Gul avatar

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

Verwandter Artikel - Go Map