🔥 Map 변경하기
Go 언어에서 Map은 키-값 쌍을 저장하는 내장 자료구조입니다. Map을 사용하면 키를 통해 값을 빠르게 찾을 수 있죠. 이번 글에서는 Map에 요소를 추가, 수정, 삭제하는 방법과 키의 존재 여부를 확인하는 방법에 대해 알아보겠습니다.
요소 추가 및 수정
Map에 새로운 요소를 추가하거나 기존 요소의 값을 수정하려면 다음과 같이 할당 연산자(=
)를 사용합니다.
m[key] = elem
go
여기서 m
은 Map, key
는 추가하거나 수정할 요소의 키, elem
은 해당 키에 할당할 값입니다. 만약 key
가 Map에 없다면 새로운 요소가 추가되고, 이미 존재한다면 해당 키의 값이 elem
으로 덮어씌워집니다.
요소 조회
Map에서 특정 키에 해당하는 값을 조회하려면 인덱스 연산자([]
)를 사용합니다.
elem = m[key]
go
key
에 해당하는 값이 elem
에 할당됩니다. 만약 key
가 Map에 없다면 elem
은 Map의 요소 타입에 따른 제로값(zero value)이 됩니다.
요소 삭제
Map에서 특정 키의 요소를 삭제하려면 내장 함수 delete
를 사용합니다.
delete(m, key)
go
key
에 해당하는 요소가 Map m
에서 삭제됩니다. 삭제하려는 키가 Map에 없어도 에러는 발생하지 않습니다.
키 존재 여부 확인
Map에 특정 키가 존재하는지 확인하려면 다음과 같이 두 개의 값을 할당받는 방식을 사용할 수 있습니다.
elem, ok = m[key]
go
key
가 Map m
에 존재하면 ok
는 true
가 되고, elem
은 해당 키의 값이 됩니다. 반면 key
가 Map에 없다면 ok
는 false
가 되고, elem
은 Map의 요소 타입에 따른 제로값이 됩니다.
만약 elem
이나 ok
가 미리 선언되지 않은 변수라면 짧은 선언(short declaration) 형식을 사용할 수 있습니다.
elem, ok := m[key]
go
이제 간단한 예제 코드를 통해 Map 변경 방법을 확인해 보죠.
package main import "fmt" func main() { // 문자열을 키로, 정수를 값으로 갖는 Map 생성 m := make(map[string]int) // 요소 추가 m["Answer"] = 42 fmt.Println("The value:", m["Answer"]) // The value: 42 // 요소 값 수정 m["Answer"] = 48 fmt.Println("The value:", m["Answer"]) // The value: 48 // 요소 삭제 delete(m, "Answer") fmt.Println("The value:", m["Answer"]) // The value: 0 // 키 존재 여부 확인 v, ok := m["Answer"] fmt.Println("The value:", v, "Present?", ok) // The value: 0 Present? false }
go
이 예제는 다음과 같은 순서로 Map을 변경합니다.
make
함수를 사용해 문자열을 키로, 정수를 값으로 갖는 Mapm
을 생성합니다.m["Answer"] = 42
로"Answer"
라는 키에42
라는 값을 할당하여 새로운 요소를 추가합니다.m["Answer"] = 48
로"Answer"
키의 값을48
로 수정합니다.delete(m, "Answer")
로"Answer"
키에 해당하는 요소를 삭제합니다.v, ok := m["Answer"]
로"Answer"
키의 존재 여부를 확인합니다. 앞서 요소를 삭제했으므로ok
는false
가 되고,v
는 정수형의 제로값인0
이 됩니다.
이렇게 Go 언어에서는 Map을 간단하게 변경할 수 있습니다. 할당 연산자로 요소를 추가하거나 수정하고, delete
함수로 삭제하며, 인덱스 연산자와 두 번째 반환값을 활용해 키의 존재 여부를 확인할 수 있죠. Map을 적재적소에 활용하면 코드의 가독성과 성능을 높일 수 있습니다.