9. 맵 (Maps)

:맵은 값에 키를 지정한다. 맵은 반드시 사용하기 전에 make 를 명시해야한다. (주의: new 가 아님.) make 를 수행하지 않은 nil 에는 값을 할당할 수 없다.

type Vertex struct {
    Lat, Long float64
}

var m map[string]Vertex

func main() {
    m = make(map[string]Vertex)
    m["Bell Labs"] = Vertex{
        40.68433, -74.39967,
    }
    fmt.Println(m["Bell Labs"])
}

9.1. 맵 리터널 (Map literals)

: 맵 리터럴은 구조체 리터럴과 비슷하지만 key 를 반드시 지정해야 한다.

type Vertex struct {
    Lat, Long float64
}

var m = map[string]Vertex{
    "Bell Labs": Vertex{
        40.68433, -74.39967,
    },
    "Google": Vertex{
        37.42202, -122.08408,
    },
}

func main() {
    fmt.Println(m)
}

9.1.1 맵 리터널 값입력시 자료형 생략 가능

type Vertex struct {
    Lat, Long float64
}
var m = map[string]Vertex{
    "Bell Labs": {
        40.68433, -74.39967,
    },
    "Google": {
        37.42202, -122.08408,
    },
}

func main() {
    fmt.Println(m)
}

9.2 맵 다루기 (Mutating Maps)

  1. 맵 삽입 및 수정
    m[key] = elem
    
  2. 요소 가져오기
    elem = m[key]
    
  3. 요소 지우기
    delete(m, key)
    
  4. 키의 존재 여부 확인하기 : 키(요소 전체)가 존재 하지 않는다고 해서, nil이 리턴되지 않는다. zero value가 리턴된다. ( int 의 경우 0이, string의 경우 ""[공백]이 리턴된다.)
    elem, ok = m[key]
    
    위의 ok 의 값은 m 에 key 가 존재한다면 true 존재하지 않으면 false , elem 은 타입에 따라 0(zero value) 가 된다. 이처럼 map 을 읽을 때, 존재하지 않는 key 의 반환 값은 타입에 맞는 zero value 이다.

results matching ""

    No results matching ""