>백엔드 개발 >Golang >Go 슬라이스의 길이와 용량의 차이점은 무엇입니까?

Go 슬라이스의 길이와 용량의 차이점은 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-12-15 14:27:15612검색

What's the Difference Between Length and Capacity in Go Slices?

Go 슬라이스의 용량과 길이 이해

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
}

슬라이스 초기화 이해

a와 b는 모두 make를 사용하여 초기화되지만 매개변수는 다릅니다. a는 길이가 5이고 용량이 5인 정수 배열을 초기화하고, b는 용량이 5인 빈 배열을 초기화합니다.

0 값 및 배열 초기화

여기서는 초기화되지 않은 변수에 대한 Go의 개념이 중요합니다. 값을 명시적으로 설정하지 않고 변수를 생성하면 0 값으로 초기화됩니다. 정수 배열의 경우 이는 모두 0을 포함하는 배열을 의미합니다.

슬라이싱 및 0 값

b를 [:2]로 슬라이스하면 새 슬라이스가 생성됩니다. 기음. 이 슬라이스는 b와 동일한 지원 배열을 가리키지만 처음 두 요소만 가리킵니다. 백업 배열이 0으로 초기화되었으므로 c에는 [0,0] 요소가 포함됩니다.

슬라이싱 및 용량

마지막으로 c를 [2로 슬라이스하면 :5], 새 슬라이스 d를 만듭니다. 이 슬라이스는 c와 동일한 백업 배열을 공유하지만 인덱스는 다릅니다. d의 용량은 5-2 = 3입니다. 슬라이싱 후 백업 배열의 나머지 요소를 나타내기 때문입니다.

위 내용은 Go 슬라이스의 길이와 용량의 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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