Go Tour의 슬라이스 용량 변경 이해 #11
Go Tour는 슬라이스를 포함한 언어 기능에 대한 통찰력 있는 데모를 제공합니다. 슬라이드 11에서는 정수 조각을 조작하여 해당 속성을 보여줍니다. 그러나 한 가지 관찰은 의문을 제기합니다. 이전 작업에서는 슬라이스 용량이 변경되지 않은 채 마지막 줄에서 왜 변경됩니까?
슬라이스 조작이 용량에 미치는 영향 이해
슬라이스 용량은 재할당이 필요하기 전에 기본 배열이 보유할 수 있는 최대 요소 수를 나타냅니다. Go Tour 코드 조각은 다음 작업을 수행합니다.
이유 마지막 줄의 용량 감소를 위해
헤더 변경 시각화
다음 코드는 슬라이스 헤더를 인쇄하여 다음에 대한 추가 통찰력을 제공합니다. 변경 사항:
<code class="go">func printSlice(s []int) { sh := (*reflect.SliceHeader)(unsafe.Pointer(&s)) fmt.Printf("header=%+v len=%d cap=%d %v\n", sh, len(s), cap(s), s) }</code>
출력에서는 처음 두 요소가 삭제될 때 헤더 데이터 포인터가 272990208에서 272990216으로 이동하여 슬라이스 용량이 줄어드는 것을 보여줍니다.
위 내용은 Go Tour 슬라이드 11에서 처음 두 요소를 삭제할 때 슬라이스 용량이 감소하지만 슬라이스 길이를 확장할 때는 감소하지 않는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!