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