Golang 알아두면 좋은 함수 - copy()

알아두면 좋은 함수

programmers 문제를 풀다가

v := array[commands[i][0]-1 : commands[i][1]]

이런 식으로 변수를 만들었더니 v 값을 바꿨는데 array 값도 함께 바뀐다.

코드에선 바뀔 부분이 없는데 왜 바뀌는 지 모르겠어서 찾아보니
단순히 새로운 변수에 슬라이스 값을 대입하면

메모리를 참조하고 있는 포인터까지 복사해오기 때문에
모두가 값이 바뀐다.

그래서 새로운 슬라이스를 생성해서
copy() 함수로 슬라이스를 복사해야 한다.

oldSlice := []int{1, 2, 3, 4, 5}
newSlice := make([]int, len(oldSlice))
copy(newSlice, oldSlice)

처럼 사용한다.

좋은 웹페이지 즐겨찾기