Go의 슬라이스 및 기본 배열 이해
Go에서 슬라이스는 기본 배열의 연속 세그먼트를 나타냅니다. 배열을 슬라이싱하면 원본과 동일한 기본 배열을 참조하지만 자체 길이와 용량을 갖는 새 슬라이스가 생성됩니다.
배열에서 슬라이스가 생성되는 다음 예를 고려해 보세요.
nums := [3]int{1, 2, 3} numSlice := nums[:2]
이 경우 슬라이스 numSlice에는 nums 배열의 처음 두 요소가 포함됩니다. 그러나 슬라이스 numSlice와 원래 배열 nums는 모두 메모리의 동일한 기본 배열을 가리킵니다.
슬라이스에 요소를 추가하면 기본 배열이 수정됩니다. 그러나 슬라이스의 용량 제한에 도달하면 추가 요소를 수용할 수 있도록 기본 배열의 크기를 조정해야 합니다.
슬라이스의 기본 배열에 액세스하려면 Go에서 Reflect 및 unsafe 패키지를 사용할 수 있습니다. Reflect.SliceHeader 유형은 기본 배열의 포인터에 대한 액세스를 제공합니다.
s := []int{1, 2, 3, 4} hdr := (*reflect.SliceHeader)(unsafe.Pointer(&s)) data := *(*[4]int)(unsafe.Pointer(hdr.Data))
이 코드는 기본 배열을 형식화된 배열(*[4]int)에 대한 포인터로 검색하여 배열 수정을 가능하게 합니다. 직접.
위 내용은 Go 슬라이스는 기본 어레이와 어떤 관련이 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!