Go 세계에서 슬라이스는 기본적인 데이터 구조입니다. 그러나 용량과 길이는 초보자에게 혼란스러울 수 있습니다. 실제 예를 사용하여 개념을 살펴보겠습니다.
func main() { a := make([]int, 5) // [0,0,0,0,0] len=5 cap=5 b := make([]int, 0, 5) // [] len=0 cap=5 c := b[:2] // [0,0] len=2 cap=5 d := c[2:5] // [0,0,0] len=3 cap=3 }
슬라이스 초기화 이해
a와 b는 모두 make를 사용하여 초기화되지만 매개변수는 다릅니다. a는 길이가 5이고 용량이 5인 정수 배열을 초기화하고, b는 용량이 5인 빈 배열을 초기화합니다.
0 값 및 배열 초기화
여기서는 초기화되지 않은 변수에 대한 Go의 개념이 중요합니다. 값을 명시적으로 설정하지 않고 변수를 생성하면 0 값으로 초기화됩니다. 정수 배열의 경우 이는 모두 0을 포함하는 배열을 의미합니다.
슬라이싱 및 0 값
b를 [:2]로 슬라이스하면 새 슬라이스가 생성됩니다. 기음. 이 슬라이스는 b와 동일한 지원 배열을 가리키지만 처음 두 요소만 가리킵니다. 백업 배열이 0으로 초기화되었으므로 c에는 [0,0] 요소가 포함됩니다.
슬라이싱 및 용량
마지막으로 c를 [2로 슬라이스하면 :5], 새 슬라이스 d를 만듭니다. 이 슬라이스는 c와 동일한 백업 배열을 공유하지만 인덱스는 다릅니다. d의 용량은 5-2 = 3입니다. 슬라이싱 후 백업 배열의 나머지 요소를 나타내기 때문입니다.
위 내용은 Go 슬라이스의 길이와 용량의 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!