HOWTO · Go

지도의 GoLang 지도

이 튜토리얼은 GoLang에서 지도의 지도를 만드는 방법을 보여줍니다.

이 페이지의 내용

이 튜토리얼은 GoLang에서 지도의 지도를 만드는 방법을 보여줍니다.

지도의 GoLang 지도

맵의 맵 또는 중첩 맵은 키-값 쌍 값이 맵이기도 한 맵입니다. GoLang에서는 지도의 지도를 만들 수 있습니다.

맵을 정의할 때 키와 값의 유형을 정의해야 합니다. 이 경우 키 유형은 int, 문자열 또는 기타 유형이 될 수 있으며 값 유형은 다시 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() 메소드를 사용하여 중첩 맵을 삭제할 수 있습니다. 두 개의 매개변수를 사용합니다. 하나는 상위 맵이고 다른 하나는 중첩된 맵 키입니다.

예를 들어 보겠습니다.

암호:

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() 메서드를 사용하여 중첩 맵의 멤버를 삭제할 수 있습니다. 여기서 첫 번째 매개변수는 중첩 맵이고 두 번째 매개변수는 삭제할 키입니다.

암호:

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)
    }
}

위의 코드는 상위 맵의 세 번째 위치에서 맵을 반복합니다.

출력:

seven Delftstack7
eight Delftstack8
nine Delftstack9