Go by Example: [10] Maps

Maps

맵(Map)은 Go언어에서 기본적으로 제공하는 연관된 데이터를 다룰 수 있는 자료구조입니다.
이 자료형은 다른언어에서는 해쉬(hash)값이나 사전(Dicts)형으로 불리는 데이터 구조입니다.

package main

import "fmt"

func main() {
    
    m := make(map[string]int)                // [1]
    
    m["k1"] = 7                              // [2]
    m["k2"] = 13
    
    fmt.Println("map:", m)                   // [3]
    
    v1 := m["k1"]                            // [4]
    fmt.Println("v1:", v1)
    
    fmt.Println("len:", len(m))              // [5]
    
    delete(m, "k2")                          // [6]
    fmt.Println("map:", m)
    
    _, prs := m["k2"]                        // [7]
    fmt.Println("prs:", prs)
    
    n := map[string]int{"foo": 1, "bar": 2}  // [8]
    fmt.Println("map:", n)
}
  1. make(map[key-type]value-type)형식을 사용해서 빈 맵을 생성하고 있습니다.
  2. name[key] = value형태로 맵에 데이터를 키값을 기준으로 설정하고 있습니다.
  3. fmt.Println()함수로 맵을 출력하면 모든 key/vaue를 출력합니다.
  4. name[key]형식으로 맵의 해당키의 값을 추출해 낼 수 있습니다.
  5. len() 내장함수를 통해서, 현재 맵의 키/값 쌍의 개수를 알아낼 수 있습니다.
  6. delete() 내장함수를 통해서, 현재 맵의 특정 값(키/값)을 제거할 수 있습니다.
  7. 맵은 내부적으로 데이터를 구별하는 맵식별자를 추가적으로 리턴합니다.
    이값은 0이거나 빈문자열("")값을 가진 키를 찾을때 사용합니다. 예제에서는 이값이
    특별히 필요하지 않기 때문에 _ 변수로 해당 값을 무시했습니다.
  8. 맵은 선언과 동시에 초기화해서 맵을 생성할 수 있습니다. (make()함수를 통하지 않았습니다.)

실행하면 다음과 같습니다.

$ go run maps.go 
map: map[k1:7 k2:13]
v1:  7
len: 2
map: map[k1:7]
prs: false
map: map[foo:1 bar:2]

fmt.Println()함수를 이용해서 맵을 출력하면 map[k:v k:v]와 같이 키/값을 모두 출력합니다.