[Go 언어] 33. 슬라이스가 꽉 찰 때 append 함수를 사용하면 알아서 늘려줘요.

안녕하세요. 언제나 휴일, 언휴예요.

앞에서 슬라이스의 저장소 용량은 동적이라고 말했어요. 그런데 좀 더 정확히 말하면 저장소의 용량은 자동으로 확장하는 제법 똑똑한 컬렉션이예요.

만약 꽉 차 있는 상태의 슬라이스에 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