길이는 슬라이스에서 참조하는 요소의 수입니다. 용량은 기본 배열의 요소 수입니다(슬라이스 포인터에서 참조하는 요소에서 시작). 길이와 용량의 차이는 우리가 다음 몇 가지 예를 통해 걸을 때 분명하게 될 것입니다. 시그니처가 있는 make라는 기본 제공 함수로 슬라이스를 만들 수 있으며, 복사 함수는 서로 다른 길이의 슬라이스 간에 복사를 지원합니다(적은 수의 요소까지만 복사). 또한 copy는 동일한 기본 배열을 공유하는 소스 및 대상 조각을 처리하여 겹치는 슬라이스를 올바르게 처리할 수 있습니다. 슬라이스 유형은 Go의 배열 유형 위에 구축된 추상화이므로 조각을 이해하려면 먼저 배열을 이해해야 합니다. 이것은 배열과 정확히 동일합니다. 조각을 할당하는 동안 배열과 슬라이스 간의 차이는 없으며, 슬라이스에 값을 할당하는 것은 실제로 슬라이스 뒤에 있는 배열에 값을 할당합니다. 슬라이스 식의 낮음 및 높은 인덱스는 선택 사항입니다. 낮음의 기본값은 0이고 높음은 슬라이스의 길이입니다. copy() 함수는 한 조각에서 다른 조각으로 요소를 복사합니다. 해당 시그니처는 다음과 같습니다 – 배열 형식 정의는 길이와 요소 유형을 지정합니다. 예를 들어[4]int 형식은 4개의 정수 배열을 나타냅니다.

배열의 크기가 고정되어 있습니다. 길이는 해당 유형의 일부입니다([4]int 및[5]int는 서로 다르며 호환되지 않는 형식입니다). 배열은 일반적인 방법으로 인덱싱할 수 있으므로 식 s[n]는 0부터 시작하여 n번째 요소에 액세스합니다. 지정된 슬라이스에 새 요소를 수용할 수 있는 충분한 용량이 없는 경우 새 기본 배열이 더 큰 용량으로 할당됩니다. 기존 슬라이스의 기본 배열의 모든 요소가 이 새 배열에 복사된 다음 새 요소가 추가됩니다. 주어진 슬라이스를 다시 슬라이스하는 것이 길이와 용량을 변경하는 방법을 이해하려면 다음 예제를 확인하십시오 – 슬라이스와 다양한 수의 인수 x가 필요합니다 . T. 그런 다음 지정된 슬라이스의 모든 요소와 새 요소를 포함하는 새 슬라이스를 반환합니다. 참고 두 번째 부가는 자체 기본 저장소가 있는 새 슬라이스를 만들고[i:]요소를 해당 슬라이스에 복사한 다음 이러한 요소를 다시 복사하여 첫 번째 부백으로 슬라이스합니다.

새 슬라이스(따라서 메모리 가비지)와 두 번째 복사본의 생성은 다른 방법을 사용하여 피할 수 있습니다: 슬라이스의 길이와 용량은 기본 제공 len 및 cap 함수를 사용하여 검사할 수 있습니다. 슬라이스는 기존 슬라이스 또는 배열을 “슬라이스”하여 형성될 수도 있습니다. 슬라이스는 두 개의 인덱스가 콜론으로 구분된 반열린 범위를 지정하여 수행됩니다. 예를 들어 식 b[1:4]는 b의 요소 1에서 3까지의 요소를 포함하는 슬라이스를 만듭니다(결과 슬라이스의 인덱스는 0에서 2가 됩니다).