더북(TheBook)

슬라이스

슬라이스는 다음과 같은 방식으로 생성한다.

[]타입
[]타입{초깃값}
make([]타입, 길이, capacity)
make([]타입, 길이)

make() 함수로 슬라이스를 생성하면 주어진 길이만큼 제로값으로 초기화된 배열을 내부 메모리 공간에 생성하고 그것의 참조를 반환한다. append() 함수로 슬라이스의 확장할 수 있는 최대 길이가 용량(capacity)이다. append() 함수로 슬라이스를 확장할 때 슬라이스 길이가 용량을 넘어서면 내부 용량이 증가된 새로운 배열을 생성한다.

다음은 슬라이스를 생성하는 예제 코드이다.


var a []int            // int 형 슬라이스 선언. 길이와 용량은 0으로 지정됨
b := []int{}           // int 형 슬라이스 선언. 길이와 용량은 0으로 지정됨
c := []int{1, 2, 3}    // 슬라이스 선언과 동시에 값을 초기화
                       // 길이와 용량은 요소의 개수로 지정됨
d := [][]int{          // 다차원 슬라이스 선언
    {1, 2},
    {3, 4, 5},
}
 
e := make([]int, 0)     // make 함수로 길이와 용량이 0인 슬라이스 생성
f := make([]int, 3, 5)  // make 함수로 길이가 3이고 용량이 5인 슬라이스 생성
 
fmt.Printf("%-10T %d %d %v\n", a, len(a), cap(a), a)
fmt.Printf("%-10T %d %d %v\n", b, len(b), cap(b), b)
fmt.Printf("%-10T %d %d %v\n", c, len(c), cap(c), c)
fmt.Printf("%-10T %d %d %v\n", d, len(d), cap(d), d)
fmt.Printf("%-10T %d %d %v\n", e, len(e), cap(e), e)
fmt.Printf("%-10T %d %d %v\n", f, len(f), cap(f), f)

실행 결과

[]int    0 0 []
[]int    0 0 []
[]int    3 3 [1 2 3]
[][]int  2 2 [[1 2] [3 4 5]]
[]int    0 0 []
[]int    3 5 [0 0 0]
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.