맵 요소 삭제하기
맵 요소 삭제하기
맵에서 특정 키의 값을 지우고 싶을 때가 있죠. 그럴 때 쓰는 내장 함수가 바로 delete예요. 이번엔 delete가 어떻게 동작하는지, 어떤 조건에서 조용히 아무 일도 하지 않는지 하나씩 살펴볼게요.
출처: Go Specification
본문
내장 함수 delete는 map m에서 키 k에 해당하는 요소를 제거해요. 이때 값 k는 m의 키 타입에 assignable(할당 가능)해야 합니다. 이 조건이 지켜져야 delete가 정상적으로 동작한다는 점을 기억해 두세요.
delete(m, k) // remove element m[k] from map m
만약 m의 타입이 type parameter(타입 파라미터)라면, 그 타입 셋에 포함된 모든 타입이 맵이어야 하고, 모두 동일한 키 타입을 가져야 해요. 제네릭 코드에서 delete를 쓸 때는 이 제약이 왜 필요한지 떠올려 보면 좋아요.
그리고 알아두면 편한 중요한 성질이 하나 있어요. 맵 m이 nil이거나 요소 m[k]가 존재하지 않아도, delete는 그냥 아무 일도 하지 않는 no-op으로 넘어갑니다. 즉 존재하지 않는 키를 지우려 해도 에러가 나지 않아요. 그래서 안전하게 지우기 전에 키가 있는지 확인하는 코드를 항상 넣을 필요는 없어요.
더 알아보기
- Map types — 맵 타입이 정의되는 방식
- Assignability — 키 타입에 값이 할당 가능하다는 조건
- Type parameter declarations — 타입 파라미터 셋의 제약