Clear 내장 함수

Clear 내장 함수

맵이나 슬라이스가 갖고 있는 요소를 전부 비워야 할 때가 있어요. 그럴 때 쓰는 내장 함수가 바로 clear예요. 맵, 슬라이스, 또는 타입 파라미터를 인자로 받아서 모든 요소를 삭제하거나 0 값(zero value)으로 만들어 주죠.

출처: Go Specification

본문

내장 함수 clearmap, 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).

더 알아보기