Golang에서 슬라이스 다시 슬라이싱
Golang에서 슬라이스는 동적 크기 조정이 가능한 유연한 데이터 구조입니다. 그러나 슬라이스를 다시 슬라이싱하는 동작을 이해하는 것은 혼란스러울 수 있습니다. 제공된 코드를 자세히 살펴보고 c의 용량에 대한 수수께끼 같은 동작을 설명하겠습니다.
func main() { b := make([]int, 0, 5) // Create an empty slice with a capacity of 5 }
여기서 b는 처음에는 비어 있지만 용량은 5입니다. 이는 기본 배열이 최대 5개를 수용할 수 있음을 의미합니다. elements.
c := b[:2] // Create a slice c from b, starting at the beginning (index 0) and ending just before index 2
이제 c는 b의 처음 두 요소를 참조하는 슬라이스입니다. 그러나 c는 기본 배열의 복사본을 생성하지 않습니다. 여전히 b에 대한 창입니다.
printSlice("c", c) // Print the length, capacity, and elements of c // Output: c len=2 cap=5 [0 0]
예상대로 c의 길이는 2이고 용량은 5입니다. 이는 c가 여전히 b가 나타내는 전체 배열에 액세스할 수 있고 나머지 3이 있기 때문입니다. 확장을 통해 잠재적으로 액세스할 수 있는 사용되지 않은 요소.
d := c[2:5] // Create a slice d from c, starting at index 2 and ending at the end (index 5)
여기서 d는 인덱스 2부터 끝(인덱스 5)까지 c의 요소를 참조하는 슬라이스입니다. c의 용량은 5이므로 d는 최대 3개의 요소를 추가로 확장할 수 있습니다.
printSlice("d", d) // Print the length, capacity, and elements of d // Output: d len=3 cap=3 [0 0 0]
d는 c의 나머지 요소를 참조하므로 길이가 3이고, 수용할 수 있으므로 용량은 3입니다. b 내에 최대 3개의 요소가 추가됩니다.
결론적으로 슬라이스의 용량은 기본 어레이의 용량과 해당 어레이 내 슬라이스의 시작 위치에 따라 결정됩니다. 이 관계를 이해함으로써 개발자는 Golang 프로그램에서 효과적으로 슬라이스를 조작하고 동작을 제어할 수 있습니다.
위 내용은 Go 슬라이스를 다시 슬라이스하면 용량이 변경되는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!