[golang] Array는 값을 복사하지만, Slice는 같은 배열을 공유한다.

hyomin·2020년 1월 2일
0

golang-grammer

목록 보기
1/3
post-thumbnail

개념

변수에 배열을 넣을 경우, 그 배열은 복사가 되지만,
슬라이스를 넣을 경우, 첫번째 값의 포인터가 할당되기 때문에, 배열을 공유하게 되고,
값을 변경할 경우 모든 값이 바뀌게 된다.

배열을 할당한 경우

Screen Shot 2020-01-02 at 12.51.18 PM.png

b[1] = 33

로 값을 변경했을 때, b만 변경됨을 알 수 있다.

슬라이스를 할당한 경우

Screen Shot 2020-01-02 at 12.52.00 PM.png

b[1] = 33

로 값을 변경했을 때, a도 변경됨을 알 수 있다.

Slice의 내부 구조

slice는 내부적으로 배열의 첫 번째 요소를 가리키는 포인터와 slice의 길이와 용량을 나타내는 값을 가지고 있습니다.

(참고내용에 아주 잘 정리된 글이 있습니다.)

참고내용

1. @kimmachinegun - [Go] Slice 집중 탐구

정말 잘 정리된 글이었다. 많은 공부가 되었다.

0개의 댓글