Go Slices: 용량 및 길이 이해
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 }
이 코드는 길이와 길이에 관한 다양한 질문을 제기합니다. 슬라이스 c와 d의 용량:
왜 c의 길이는 다음과 같습니다. 2이고 [0,0]을 포함합니까?
b는 처음에는 비어 있었지만([], 길이=0) Go 배열과 슬라이스는 항상 0 값으로 초기화된다는 점에 유의하는 것이 중요합니다. 정수의 경우 0 값은 0입니다. 따라서 b를 [:2]로 슬라이스하면 b의 0 값을 상속하는 새 슬라이스가 생성됩니다.
왜 d의 용량은 3인가요?
Go에서 슬라이스를 슬라이스하면 동일한 기본 배열을 재사용합니다. 이 경우 d는 c와 동일한 백업 어레이를 공유합니다. d의 용량은 end-start로 계산됩니다. 여기서 start와 end는 각각 슬라이스 표현식([2:5])의 시작 및 끝 인덱스입니다. 따라서 d의 용량은 5(끝) - 2(시작) = 3입니다.
위 내용은 Go 슬라이스: 슬라이스 c와 d가 각각의 길이와 용량을 갖는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!