본문 바로가기
golang

golang에서의 slicing

by PudgeKim 2020. 5. 18.

golang에서는 파이썬처럼 리스트 슬라이싱 기능을 지원하는데 오늘은 슬라이싱을 할 때의 주의점을 알아보자

 

파이썬을 써보았다면 익숙할 슬라이싱이다. 근데 여기서 질문을 던져보겠다. 

리스트 b는 리스트 a와 아무 연관이 없는 리스트일까?

정답은 연관이 있다이다. 아래 그림을 보자

b[0]을 11로 바꾸니 리스트a의 3번째인덱스도 바뀌어버렸다. (참고로 슬라이싱의 원조?인 파이썬에서는 golang과는 다르게 슬라이싱한 리스트의 값을 변경해도 원본 리스트의 값이 변경되지 않는다.)

이게 무엇을 의미할까?

즉, golang에서 슬라이싱이란 원본 리스트를 슬라이싱한 범위만 가리키고 있다는 뜻이다. 뭔소린지 글로는 이해가 안갈 것이다. 아래 그림을 보면 이해가 잘될테니 아래 그림을 보자

 

이러한 이유로 golang에서 슬라이싱을 잘못사용하다간 의도하지않은 데이터가 변경될 수 있으니 주의하자.

'golang' 카테고리의 다른 글

golang과 함께 알아보는 쿠키  (0) 2020.12.09
golang 정렬하기  (0) 2020.10.22
golang에서 HandlerFunc란?  (0) 2020.10.19
golang에서 slice VS linkedlist  (0) 2020.05.22
golang에서의 문자열 처리  (0) 2020.05.13