본문 바로가기

slice2

golang array와slice 이번 글에서는 golang에서 햇갈릴만한 array와 slice의 차이점을 알아보겠습니다. 1 2 3 4 5 6 func main() { var a = [3]int{1,2,3} b := a b[1] = 22 } cs []안에 숫자를 넣으면 길이가 늘어나지 않는 array가 됩니다. 위 코드의 경우 b의 값을 바꾸었는데 a[1]의 값도 바뀔까요? a의 값은 바뀌지 않습니다. array의 경우 := 연산자를 이용했을 때 call by value 형식으로 넘어가기 때문입니다. 1 2 3 4 5 6 7 func main() { var a = []int{1,2,3} b := a b[1] = 22 } cs 이번에는 slice 코드입니다. 첫번째 코드와 다른점은 []안에 숫자가 없다는 점입니다. slice의 경우에는.. 2021. 3. 23.
golang에서 slice VS linkedlist 이번 포스팅에서는 golang에서 기본적으로 제공하는 기능인 slice와 자료구조의 기본인 linkedlist를 비교해보겠다. 아 참고로 linkedlist는 자기 앞 노드를 기억할 수 있는 double linkedlist를 기준으로 한다. 첫번째로 slice와 linkedlist에서의 맨 앞과 맨 끝 삭제를 비교해보자. 예전 포스팅에서 golang에서 slicing을 하면 새로운 복사본을 얻는게 아니라 단지 slicing한 범위를 포인팅하는 것이라고 했다. (이것 때문에 slicing한 slice의 값을 바꾸면 원본 slice도 값이 바뀌게 된다.) 즉, slice에서의 첫번째 항목 삭제는 아래그림과 같다. 원본 slice는 검은 화살표처럼 맨 처음과 맨 끝을 가리키지만 slicing을 이용하면 그 초.. 2020. 5. 22.