슬라이스
슬라이스는 다음과 같은 방식으로 생성한다.
[]타입 []타입{초깃값} 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]