슬라이스 용량 감소 이해
Go 슬라이스는 저장을 위해 기본 배열을 사용하는 효율적인 데이터 구조입니다. 길이와 용량의 조합으로 표시되며 용량은 슬라이스가 보유할 수 있는 최대 요소 수를 정의합니다.
슬라이스 용량 변경
슬라이스 캔 조작 때때로 용량에 영향을 미칩니다:
예
다음 Go 프로그램을 고려하세요.
package main import "fmt" func main() { s := []int{2, 3, 5, 7, 11, 13} printSlice(s) s = s[:0] printSlice(s) s = s[:4] printSlice(s) s = s[2:] printSlice(s) } func printSlice(s []int) { fmt.Printf("len=%d cap=%d %v\n", len(s), cap(s), s) }
이 프로그램 실행 출력:
len=6 cap=6 [2 3 5 7 11 13] len=0 cap=6 [] len=4 cap=6 [2 3 5 7] len=2 cap=4 [5 7]
설명
처음에 슬라이스의 길이는 6이고 용량은 6입니다. 길이를 0으로 변경해도 포인터는 수정되지 않습니다. 따라서 용량은 변경되지 않습니다. 길이를 4로 확장해도 용량은 동일하게 유지됩니다. 그러나 두 번째 요소부터 슬라이스를 슬라이스하면(s = s[2:]) 포인터가 변경되어 길이가 2이고 용량이 4인 새 슬라이스가 생성됩니다.
데이터 복구
s = s[2:]는 슬라이스에서 처음 두 요소를 제거합니다. 복구해야 하는 경우 s = s[2:] 작업을 수행하기 전에 이를 포함하는 새 슬라이스를 생성해야 합니다.
슬라이스의 메모리 표현
슬라이스의 메모리 표현을 이해하는 것은 s의 용량이 왜 =인지 이해하는 데 중요합니다. s[2:] 감소:
위 내용은 슬라이싱은 Go 슬라이스 용량에 어떤 영향을 미칩니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!