Programming Language/Go
[Go] map
SdardewValley
2021. 11. 11. 22:00
반응형
map
키와 값의 쌍으로 이루어진 형태의 자료구조
💡 key 값은 비교 연산자 (== , !=)를 사용하여 값을 비교할 수 있어야 한다.
💡 value 값은 모두 가능하다.
key 값으로 가능한 값
- 내장 타입: int, float, string ...
- 내장 타입 기반의 데이터: 배열, struct, 사용자 정의 타입, 포인터
💡 슬라이스와 맵 같은 참조타입은 비교 연산자를 사용할 수 없기 때문에 키로 사용 불가능하다
💡 배열은 문자열로 변환하여 키로 사용할 수 있다
생성 & 초기화
map을 생성하는 방법
- map[키타입]값타입{}
- map[키타입]값타입{초기값}
- make(map[키타입]값타입, 초기용량)
- make(map[키타입]값타입)
값 접근
키로 값에 접근을 하기 위해서는 배열 및 슬라이스와 마찬가지로 인덱스 연산자 [ ] 를 사용하면 된다.
키가 없을 때는 값으로 지정한 타입의 0값을 리턴한다. 이 때, 만약 값이 0이라서 0값을 리턴했는지 아님 정말 값이 0값인지 알 수 없을 수도 있다. 이런 경우 [] 연산자를 사용하여 리턴 값을 두 개를 받으면 된다. 첫 번째 리턴 값은 키에 대응하는 값이고, 두 번째 리턴값은 키가 map에 있는지 없는지를 true/false 값 으로 나타낸 것이다.
for ... range를 map에 적용하여 키와 값을 같이 반환할 수 있다. for ... range를 통해 접근하는 경우 요소에 접근 순서는 예측할 수 없다.
추가 & 수정 & 삭제
추가와 수정은 인덱스 연산자 [] 를 사용하면 된다.
요소를 삭제하고 싶으면 delete 함수를 사용하면 된다. 첫 번째 파라미터로 슬라이스, 두 번째 파라미터로 키 값을 주면 된다.