🔥 Map 변경하기

415자
5분

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에 존재하면 oktrue가 되고, elem은 해당 키의 값이 됩니다. 반면 key가 Map에 없다면 okfalse가 되고, 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을 변경합니다.

  1. make 함수를 사용해 문자열을 키로, 정수를 값으로 갖는 Map m을 생성합니다.
  2. m["Answer"] = 42"Answer"라는 키에 42라는 값을 할당하여 새로운 요소를 추가합니다.
  3. m["Answer"] = 48"Answer" 키의 값을 48로 수정합니다.
  4. delete(m, "Answer")"Answer" 키에 해당하는 요소를 삭제합니다.
  5. v, ok := m["Answer"]"Answer" 키의 존재 여부를 확인합니다. 앞서 요소를 삭제했으므로 okfalse가 되고, v는 정수형의 제로값인 0이 됩니다.

이렇게 Go 언어에서는 Map을 간단하게 변경할 수 있습니다. 할당 연산자로 요소를 추가하거나 수정하고, delete 함수로 삭제하며, 인덱스 연산자와 두 번째 반환값을 활용해 키의 존재 여부를 확인할 수 있죠. Map을 적재적소에 활용하면 코드의 가독성과 성능을 높일 수 있습니다.