マップの GoLang マップ

Sheeraz Gul 2023年6月20日
  1. マップの GoLang マップ
  2. ネストされたマップを削除する
  3. ネストされたマップを反復処理する
マップの 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
著者: Sheeraz Gul
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

関連記事 - Go Map