HOWTO · Go

マップの GoLang マップ

このチュートリアルでは、GoLang でマップのマップを作成する方法を示します。

このページの内容

このチュートリアルでは、GoLang でマップのマップを作成する方法を示します。

マップの GoLang マップ

マップのマップまたはネストされたマップは、キーと値のペアがマップでもあるマップです。 GoLang ではマップのマップを作成できます。

マップを定義するときは、キーと値のタイプを定義する必要があります。 この場合、キーの型は intstring、またはその他の型にすることができ、値の型は再び 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