언어 자료구조 알고리즘/구글 Go

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

언제나휴일 2016. 12. 17. 05:29
반응형

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


관련 게시글

[구글 Go 하자] 31. 동적 배열, 슬라이스 기초

[구글 Go 하자] 32. 슬라이스에 append 함수로 순차 보관

[구글 Go 하자] 34.슬라이스도 초기 값을 설정할 수 있어요.

[구글 Go 하자] 35. 배열의 대입 연산은 값 복사, 슬라이스는 참조

[구글 Go 하자] 36. copy 함수를 사용하면 원소 값을 복사할 수 있어요.

[구글 Go 하자] 37. 슬라이스[start:last]로 부분 슬라이스를 만들 수 있어요.

 

반응형