개발일기

Go - Map이란? 본문

프로그래밍 언어/Go

Go - Map이란?

Flashback 2022. 3. 29. 12:07
728x90
반응형

1. Map이란?

Map은 Key와 Value로 구성된 일종의 데이터타입이다. 맵을 사용할 때, Key와 Value에 값을 넣은 후, 키값에 따라 해당하는 값을 가져오는 방식으로 사용한다. 자바의 HashMap, 파이썬의 Dict와 같은 형식을 가지고 있다.

 

2. Map의 형식

Go에서 map을 생성할 때는, Slice를 생성할 때와 마찬가지로 make내장함수를 사용하여 생성한다.

맵이름 = make(map[키의 자료형]값의 자료형)

testMap = make(map[string]int)
// testMap이라는 맵에 키값의 자료형이 string이고 값의 자료형이 int로 비어있는 맵 생성

 

 

3. Map 생성

package main

func main() {
   testMap := make(map[int]string)
   
   // map에 값 추가
   testMap[0] = "test0"
   testMap[1] = "test1"
   testMap[2] = "test2"
}

키값은 int 정수형, 값은 string 문자열로 지정하였다. 맵에 값을 추가할 때는, Slice또는 배열에 값을 추가하는 방법과 동일하게 하면된다.

 

4. Value값 변경

package main

func main() {
   testMap := make(map[int]string)
   
   // map에 값 추가
   testMap[0] = "test0"
   testMap[1] = "test1"
   testMap[2] = "test2"
   
   // value값 변경
   testMap[2] = "test22"
}

맵의 value를 변경하는 것은 다음과 같이 이미 선언된 키에 값을 재할당하는 방법으로 값을 변경할 수 있다. 

 

5. Key 검증

맵에 해당하는 키가 존재하는지의 유무를 확인할 수 있다. 키값이 존재하지 않을 경우, false를 반환하고 존재할 경우에는 true를 반환한다.

package main

func main() {
   testMap := make(map[int]string)
   
   testMap[0] = "test0"
   testMap[1] = "test1"
   testMap[3] = "test3"
   
   value, exist := testMap[2]
   println("value & exist : ", value, exist)
   
   value2, exist2 := testMap[1]
   println("value2 & exist2 : ", value2, exist2)
   
   /*
   실행결과 : 
   	value & exist :   false
	value2 & exist2 :  test1 true
   */
}

위의 코드를 실행할 경우, 위와 같은 실행결과가 나타나게 된다. value에는 해당 키가 존재할 경우, 해당 키의 값을 출력한다. exist에는 키의 존재 유무를 나타낸다. 값의 자료형이 문자열이고 키값이 존재하지 않을 경우 "". 즉, 빈값이 나오게 된다. 만약 값의 자료형이 정수형이고 키값이 존재하지 않는 다면 0값이 나오게 된다.

 

6. Key 삭제

맵에서 키와 값을 삭제하고자 할 때, 내장함수 delete를 사용하여 삭제할 수 있다.

delete(맵이름, 삭제할 키 값)

delete(testMap, 2)
// testMap의 키값이 2인 것을 삭제한다.

 

package main

func main() {
   testMap := make(map[int]string)
   
   testMap[0] = "test0"
   testMap[1] = "test1"
   testMap[2] = "test2"
   
   delete(testMap, 2)
   println(testMap[2])
   // testMap[2]가 삭제되었기에 빈 공백이 나온다.
}

위의 코드를 실행하면 키값이 2인 key와 value 쌍을 삭제하였기 때문에 빈 공백이 나오는 것을 확인할 수 있다.

 

7. Map과 for range

for range를 사용하여 해당 맵에 존재하는 키와 값 쌍들을 출력할 수 있다.

package main

func main() {
   testMap := make(map[int]string)
   
   testMap[0] = "test0"
   testMap[1] = "test1"
   testMap[2] = "test2"
   
   for item, value := range testMap {
      println(item, value)
   }
   
   /*
   	실행 결과 : 
    0 test0
    1 test1
    2 test2
   */
}

for-range를 사용하여 맵의 값을 출력할 때, 키의 순서대로 출력되는 것이 아니라, 정렬되지 않은 상태로 출력된다. 위와 같은 경우는 운이 좋아 정렬된 채로 출력이 되었지만, 몇 번 더 실행해 보면 임의의 순서로 키와 값이 출력되는 것을 확인할 수 있다.

Map은 키에 따라 순서대로 정렬되는 것이 아니라 임의의 순서를 가지고 있다는 특징을 가지고 있다.

728x90
반응형

'프로그래밍 언어 > Go' 카테고리의 다른 글

Go - defer 호출이란?  (0) 2022.08.07
Go - 함수의 정의 및 사용법  (0) 2022.08.03
Go - Slice의 len과 cap  (0) 2022.03.16
Go - 배열 사용법  (0) 2022.03.15
Go - 함수의 사용법 및 응용  (0) 2022.03.15
Comments