더북(TheBook)

3.5.1 생성과 초기화

맵은 다음과 같은 방식으로 생성한다.

map[키타입]값타입{}

map[키타입]값타입{초깃값}

make(map[키타입]값타입, 초기용량)

make(map[키타입]값타입)

 

다음 예제는 string 타입 키와 int 타입 값을 갖는 map을 생성한다

▼ 맵 생성 예제 1

numberMap := map[string]int{}
numberMap["one"] = 1
numberMap["two"] = 2
numberMap["three"] = 3
fmt.Println(numberMap)

실행 결과

map[one:1 two:2 three:3]

▼ 맵 생성 예제 2

numberMap := map[string]int{
    "one": 1,
    "two": 2,
    "three": 3, // 요소를 여러 줄로 표기할 때 요소의 끝에 콤마(,)를 붙여야 함
}
fmt.Println(numberMap)

실행 결과

map[three:3 one:1 two:2]

▼ 맵 생성 예제 3

numberMap := make(map[string]int, 3) // 용량 생략 가능
numberMap["one"] = 1
numberMap["two"] = 2
numberMap["three"] = 3
fmt.Println(numberMap)

실행 결과

map[one:1 two:2 three:3]

키로 값에 접근할 때는 배열이나 슬라이스처럼 인덱스 연산자([])를 사용한다.

맵을 fmt.Println()로 출력하면 내부 값들을 키:값 형태로 보여준다. 맵 내부의 요소는 정렬되어 있지 않아서 실행할 때마다 출력 순서가 달라질 수 있다.

for ... range 루프를 맵에 적용하면 키와 값을 반환한다. 맵의 요소는 정렬되어 있지 않으므로 각 요소에 어떤 순서로 접근할지 예측할 수 없다.

▼ 맵 내부 요소에 순차적으로 접근

numberMap := make(map[string]int)
numberMap["one"] = 1
numberMap["two"] = 2
numberMap["three"] = 3
 
for k, v := range numberMap {
    fmt.Println(k, v)
}

실행 결과

one 1

three 3

two 2

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.