슬라이스 타입

슬라이스는 내재 배열의 연속된 부분(segment)에 대한 디스크립터(descriptor)이며 슬라이스를 이용해 순서대로 정렬된 배열 안의 요소에 접근할 수 있다. 슬라이스의 타입은 요소 타입으로 구성된 배열들의 모든 슬라이스 집합으로 나타낸다. 초기화되지 않은 슬라이스의 값은 nil이다.

SliceType = "[" "]" ElementType .

배열과 마찬가지로, 슬라이스도 인덱스로 접근할 수 있고 길이가 있다. 내장함수 len을 이용해 슬라이스 s 의 길이를 알 수 있다; 실행 도중에도 길이가 바뀔 수 있다는 점에서 배열의 길이와 차이가 있다. 0에서 len(s) - 1 까지의 정수 인덱스를 사용해 요소들에 접근할 수 있다. 특정 요소에 대한 슬라이스의 인덱스는 내재 배열의 같은 요소에 대한 인덱스보다 작을 수 있다.

초기화된 슬라이스는 요소들이 저장된 내재 배열과 항상 연계해서 생각해야 한다. 슬라이스는 내재 배열 및 같은 배열의 다른 슬라이스들과 저장공간을 공유한다; 서로 다른 배열의 경우, 항상 각자의 고유 저장공간을 가진다.

슬라이스의 내재 배열은 슬라이스의 끝을 넘어서는 범위까지도 확장할 수 있다. 용량 은 이러한 범위를 측정하는 것이다: 용량은 슬라이스의 길이와 슬라이스 범위를 초과한 배열의 길이를 합친 것이다; 슬라이싱(slicing)을 사용해 원래의 슬라이스로부터 용량과 같은 길이만큼의 슬라이스를 만들어 낼 수 있다. 슬라이스 a의 용량은 내장 함수 cap(a)를 이용해 알 수 있다.

내장함수 make를 사용해요소 타입 T를 위한 새롭게 초기화된 슬라이스를 만들 수 있는데, make 의 매개 변수는 슬라이스 타입, 길이로 구성되며 용량 매개 변수는 선택사항이다. make로 만든 슬라이스는 항상 새로운 배열을 은밀히 할당하며 make 함수가 반환하는 슬라이스는 이 배열을 참조한다. 즉, 다음을 실행하면

make([]T, length, capacity)

배열을 할당하고 이 배열에 대해 슬라이싱(slicing)한 결과와 같은 슬라이스가 만들어 지기 때문에, 다음의 두 식은 같다:

make([]int, 50, 100)
new([100]int)[0:50]

배열과 마찬가지로, 슬라이스도 항상 일차원이지만 고차원 객체들로 만들 수도 있다. 배열의 배열인 경우, 생성과정에서 내부의 배열은 항상 같은 길이를 가진다; 하지만 슬라이스의 슬라이스 (혹은 슬라이스의 배열)의 경우, 내부 슬라이스의 길이가 매우 유동적일 수 있다. 또한, 내부의 슬라이스들은 반드시 개별적으로 초기화되어야 한다.

results matching ""

    No results matching ""