Golang で 2つのマップをマージする
このチュートリアルでは、Golang で 2つのマップをマージする方法を示します。
Golang には、マップをマージする組み込み機能はありませんが、これは Copy
メソッドを使用するか、対応するプロセスに従って行うことができます。 両方の方法を試してみましょう。
Copy
メソッドを使用して Golang で 2つのマップをマージする
Copy
メソッドを使用すると、あるマップのコンテンツを別のマップにコピーして、マップのマージ機能を実現できます。 Copy
メソッドは Golang 1.18 バージョンで導入されました。
Copy
メソッドは、マップである 2つのパラメーターを取ります。 2 番目のマップのコンテンツが最初のマップにコピーされます。
例を試してみましょう:
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)
}
上記のコードは、Copy
メソッドを使用してユニオンに基づいて 2つのマップをマージします。 Copy
メソッドの唯一の欠点は、最初のマップを変更することです。
出力を参照してください。
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.
Golang で 2つのマップをマージするユーザー定義の方法
ユニオンに基づいて 2つのマップをマージするメソッドを設計できます。これにより、同じ値を持つエントリが除外されます。 以下に例を示します。
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)
}
上記のコードは、同じ値を持つエントリを除外することで 2つのマップをマージします。基本的には、マップの結合です。 コードは最初に構造体を作成し、int キーと構造体値でマップします。 次に、ユーザー定義メソッド MapUnion
を使用して、値の結合に基づいてそれらをマージします。
出力を参照してください。
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