슬라이스 사용하기

이재홍 http://www.pyrasis.com 2014.12.17 ~ 2015.02.07

슬라이스와 용량

왜 슬라이스는 길이와 용량이 따로 구분되어 있을까요? 앞서 슬라이스는 길이를 동적으로 늘릴 수 있다고 했습니다.

먼저 길이가 5이며 용량이 5인 슬라이스를 생성합니다. 그리고 append 함수를 사용하여 값 두개를 추가합니다.

a := []int{1, 2, 3, 4, 5}

fmt.Println(len(a), cap(a)) // 5 5: 길이가 5이며 용량이 5인 슬라이스

a = append(a, 6, 7)         // 슬라이스 a에 값 6, 7을 추가

fmt.Println(len(a), cap(a)) // 7 10: 길이가 7이며 용량이 10인 슬라이스, 용량이 늘어남!

실행 결과

5 5
7 10

처음에는 슬라이스 a의 길이가 5이며 용량도 5입니다. append 함수로 값 두개를 추가했으므로 길이는 7입니다. 그리고 용량을 보면 10으로 늘어나있습니다. 이처럼 Go 언어는 동적 배열을 구현하기 위해 길이와 용량을 구분하고 있습니다. 따라서 슬라이스의 요소가 늘어나면 Go 런타임은 정해진 알고리즘에 의해 슬라이스의 용량을 늘립니다.


저작권 안내

이 웹사이트에 게시된 모든 글의 무단 복제 및 도용을 금지합니다.
  • 블로그, 게시판 등에 퍼가는 것을 금지합니다.
  • 비공개 포스트에 퍼가는 것을 금지합니다.
  • 글 내용, 그림을 발췌 및 요약하는 것을 금지합니다.
  • 링크 및 SNS 공유는 허용합니다.

Published

01 June 2015