안녕하세요. 언제나 휴일, 언휴예요.
앞에서 슬라이스의 저장소 용량은 동적이라고 말했어요. 그런데 좀 더 정확히 말하면 저장소의 용량은 자동으로 확장하는 제법 똑똑한 컬렉션이예요.
만약 꽉 차 있는 상태의 슬라이스에 append 함수를 이용하여 자료를 추가하면 저장소의 용량은 알아서 늘려줘요. 현재 용량이 0이면 1로 늘려주고 그 외에는 현재 용량의 두 배로 늘어나요. 다음의 예제 코드는 이를 확인하는 간단한 코드예요.
//슬라이스가 꽉 찰 때 append 함수 사용 package main import "fmt" func main() { var s []int fmt.Printf("용량:%d 원소 개수:%d\n", cap(s), len(s)) var i int for i = 0; i < 10; i++ { s = append(s, i+1) fmt.Printf("용량:%d 원소 개수:%d\n", cap(s), len(s)) } }
실행 결과는 다음과 같아요.
용량:0 원소 개수:0 용량:1 원소 개수:1 용량:2 원소 개수:2 용량:4 원소 개수:3 용량:4 원소 개수:4 용량:8 원소 개수:5 용량:8 원소 개수:6 용량:8 원소 개수:7 용량:8 원소 개수:8 용량:16 원소 개수:9 용량:16 원소 개수:10