본문으로 바로가기

3. Go언어 기초 (자료구조, Map)

category Go언어/Go언어 기초 2020. 8. 30. 10:09

이번 글 목차


1. Map

 

 

Go에서의 Map은?


1. 개념

1) map은 해시테이블로 구현 (Key, Value로 되어 있으며 키를 이용해서 상수 시간에 가져올 수 있다. 단, 순서는 없다.)

 

2. 기본 활용방법

//1. 맵을 담는 변수 정의
var m map[keyType]valueType

//2. 맵 생성
m := make(map[keyType]valueType)
//2-1. 빈 맵 생성
m := map[keyType]valueType{}

//3. 맵에 value 추가
map[key] = value

//4. 맵에 키가 들어있는지 확인
value, ok := m[key]

//5. 맵에 키 완전 삭제
delete(m, key)

3번에 대해 조금 더 알아보면 map에 해당 키가 없으면 자료형의 기본값이 반환됩니다.(정수형은 0, 문자열은 빈 문자열)

1) 맵에 이미 키가 들어 있는 경우 기존에 있던 값이 벼경

2) 맵에 키가 없는 경우 새로 생성

 

5번의 경우 key 삭제되어 기본값이 들어있는게 아닌  len(m) 값이 1이 줄어든다고 생각하시면 됩니다.

 

 

 

3. 주의 사항

 

1. 맵 변수 자체에 다시 할당하지 않아 포인터를 취하지 않아도 맵을 변경할 수 있다

func count(s string, m map[rune]int) {
	for _, r := range s {
    	m[r]++
    }
}

※ map에서 range를 두 개의 값을 사용하면 key, value가 나오지만 하나의 변수로만 받게 되면 key만 나옵니다.

 

2. map은 무작위 출력이기 때문에 테스트 시 주의해야 한다.

 

1) reflect.DeepEqual을 이용

2) 순서대로 맵에 접근하는 방법

 


댓글을 달아 주세요