>백엔드 개발 >Golang >Go 슬라이스: 슬라이스 c와 d가 각각의 길이와 용량을 갖는 이유는 무엇입니까?

Go 슬라이스: 슬라이스 c와 d가 각각의 길이와 용량을 갖는 이유는 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-12-28 20:23:13719검색

Go Slices: Why Do Slices c and d Have Their Respective Lengths and Capacities?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.