Clear 내장 함수
Clear 내장 함수
맵이나 슬라이스가 갖고 있는 요소를 전부 비워야 할 때가 있어요. 그럴 때 쓰는 내장 함수가 바로 clear예요. 맵, 슬라이스, 또는 타입 파라미터를 인자로 받아서 모든 요소를 삭제하거나 0 값(zero value)으로 만들어 주죠.
출처: Go Specification
본문
내장 함수 clear는 map, slice, 또는 type parameter 타입의 인자를 받아서 모든 요소를 삭제하거나 0으로 채워요 (Go 1.21).
어떤 일을 하는지는 인자의 타입에 따라 조금씩 달라져요. 정리하면 이렇게 돼요.
Call Argument type Result
clear(m) map[K]T deletes all entries, resulting in an
empty map (len(m) == 0)
clear(s) []T sets all elements up to the length of
s to the zero value of T
clear(t) type parameter see below
맵을 넘기면 모든 항목이 지워져서 빈 맵이 되고(len(m) == 0), 슬라이스를 넘기면 길이만큼의 요소 전부가 그 타입의 0 값으로 설정돼요. 흥미로운 건 슬라이스의 길이 자체는 그대로 유지된다는 점이에요.
clear에 넘긴 인자의 타입이 type parameter라면 조금 다른 규칙을 따라요. 타입 집합(type set)에 있는 모든 타입이 맵이나 슬라이스여야 하고, clear는 실제 타입 인자에 맞는 연산을 수행해요.
한 가지 알아두면 좋은 점이 있어요. 맵이나 슬라이스가 nil이라면 clear는 아무것도 하지 않아요(no-op).
더 알아보기
- Map types — 맵 타입의 구조와 동작
- Slice types — 슬라이스 타입의 구조와 동작
- Type parameter declarations — 타입 파라미터와 타입 집합
- Go 1.21 —
clear가 도입된 Go 1.21 릴리스 노트