본문 바로가기
728x90
반응형

APPEND2

golang slice elements copy (copy(), append(), for ... range) golang에서 slice는 특정 배열의 위치를 가르키는 pointer를 가지는 reference 타입의 구조체이다. 그렇기 때문에 대입 연산자 ('=') 를 사용하여 Copy를 하면 값(Elements) 가 Copy가 되는 것이 아니라  reference type의 구조체가 Copy되는 것이다. 즉, 아래 그림과 같이 SliceA를 대입 연산자를 통해 SliceB에 복사한 경우 같은 배열을 가르키는 pointer를 가지는 reference type의 구조체가 만들어져, SliceA에서 배열의 값을 변경하는 경우 SliceB 도 같은 배열을 가르키고 있기 때문에 SliceB 가르키는 값 역시 변경되는 것이다.   이 경우 의도하였다면 큰 문제가 되지 않겠지만, 대부분 이런 경우는 논리적 오류를 일으킬 가.. 2024. 1. 14.
golang slice or array element(item) remove (delete) golang에의 List 타입으로는 가변 길이를 지원하는 slice가 존재한다. java의 경우 list 에서 index remove(), object remove()를 제공하지만 golang의 slice에서는 애석하게도 remove()를 직접 구현해주어야 한다. 가장 간단한 방법은 append()를 이용하는 방법이 있다. 아래와 같이 지우고자하는 index에 다음 index 부터의 값들을 append 해버리는 개념이다. ex01) slice element delete example using append() slice := []int{1, 2, 3, 4, 5, 6, 7} fmt.Println(slice)//for debug slice = append(slice[0:], slice[1:]...} fmt... 2023. 1. 16.
728x90
반응형