HOWTO · Go
マップの GoLang マップ
このチュートリアルでは、GoLang でマップのマップを作成する方法を示します。
このページの内容
このチュートリアルでは、GoLang でマップのマップを作成する方法を示します。
マップの GoLang マップ
マップのマップまたはネストされたマップは、キーと値のペアがマップでもあるマップです。 GoLang ではマップのマップを作成できます。
マップを定義するときは、キーと値のタイプを定義する必要があります。 この場合、キーの型は int、string、またはその他の型にすることができ、値の型は再び map になります。
構文:
var DemoMap = map[string]map[string]string{}
また
var DemoMap = map[int]map[string]string{}
ご覧のとおり、DemoMap はキー文字列、int 型、およびマップ型としての値で定義されています。 例を挙げましょう。
コード:
package main
import "fmt"
func main() {
DemoMap := map[int]map[string]string{
1: {
"one": "Delftstack1",
"two": "Delftstack2",
"three": "Delftstack3",
},
2: {
"four": "Delftstack4",
"five": "Delftstack5",
"Six": "Delftstack6",
},
3: {
"seven": "Delftstack7",
"eight": "Delftstack8",
"nine": "Delftstack9",
},
4: {
"ten": "Delftstack10",
"eleven": "Delftstack11",
"twelve": "Delftstack12",
},
}
fmt.Println(DemoMap)
}
上記のコードは、キーの整数と値のマップを使用してマップのマップを作成し、マップを出力します。
出力:
map[
1:map[one:Delftstack1 three:Delftstack3 two:Delftstack2]
2:map[Six:Delftstack6 five:Delftstack5 four:Delftstack4]
3:map[eight:Delftstack8 nine:Delftstack9 seven:Delftstack7]
4:map[eleven:Delftstack11 ten:Delftstack10 twelve:Delftstack12]]
ネストされたマップを削除する
GoLang の delete() メソッドを使用して、ネストされたマップを削除できます。 1つは親マップ、もう 1つはネストされたマップ キーです。
例を挙げましょう。
コード:
package main
import "fmt"
func main() {
DemoMap := map[int]map[string]string{
1: {
"one": "Delftstack1",
"two": "Delftstack2",
"three": "Delftstack3",
},
2: {
"four": "Delftstack4",
"five": "Delftstack5",
"Six": "Delftstack6",
},
3: {
"seven": "Delftstack7",
"eight": "Delftstack8",
"nine": "Delftstack9",
},
4: {
"ten": "Delftstack10",
"eleven": "Delftstack11",
"twelve": "Delftstack12",
},
}
delete(DemoMap, 3)
fmt.Println(DemoMap)
}
上記のコードは、親マップからキー 3 のネストされたマップを削除します。
出力:
map[
1:map[one:Delftstack1 three:Delftstack3 two:Delftstack2]
2:map[Six:Delftstack6 five:Delftstack5 four:Delftstack4]
4:map[eleven:Delftstack11 ten:Delftstack10 twelve:Delftstack12]]
同様に、同じ delete() メソッドを使用して、ネストされたマップのメンバーを削除できます。最初のパラメーターはネストされたマップになり、2 番目のパラメーターは削除するキーになります。
コード:
package main
import "fmt"
func main() {
DemoMap := map[int]map[string]string{
1: {
"one": "Delftstack1",
"two": "Delftstack2",
"three": "Delftstack3",
},
2: {
"four": "Delftstack4",
"five": "Delftstack5",
"Six": "Delftstack6",
},
3: {
"seven": "Delftstack7",
"eight": "Delftstack8",
"nine": "Delftstack9",
},
4: {
"ten": "Delftstack10",
"eleven": "Delftstack11",
"twelve": "Delftstack12",
},
}
delete(DemoMap[3], "seven")
fmt.Println(DemoMap)
}
上記のコードは、メンバー キー seven を持つキー 3 のネストされたマップのメンバーを削除します。
出力:
map[
1:map[one:Delftstack1 three:Delftstack3 two:Delftstack2]
2:map[Six:Delftstack6 five:Delftstack5 four:Delftstack4]
3:map[eight:Delftstack8 nine:Delftstack9]
4:map[eleven:Delftstack11 ten:Delftstack10 twelve:Delftstack12]]
ネストされたマップを反復処理する
ネストされたマップを反復処理するには、for ループでマップのインデックス番号を指定する必要があります。 ネストされたマップを反復処理する例を見てみましょう。
コード:
package main
import "fmt"
func main() {
DemoMap := map[int]map[string]string{
1: {
"one": "Delftstack1",
"two": "Delftstack2",
"three": "Delftstack3",
},
2: {
"four": "Delftstack4",
"five": "Delftstack5",
"Six": "Delftstack6",
},
3: {
"seven": "Delftstack7",
"eight": "Delftstack8",
"nine": "Delftstack9",
},
4: {
"ten": "Delftstack10",
"eleven": "Delftstack11",
"twelve": "Delftstack12",
},
}
for key, value := range DemoMap[3] {
fmt.Println(key, value)
}
}
上記のコードは、親マップの 3 番目の位置でマップを反復処理します。
出力:
seven Delftstack7
eight Delftstack8
nine Delftstack9