golang pointer1 [Go언어] for 루프에서 포인터 사용 시 동일 객체 참조 문제 문제 아래와 같이 for 루프를 사용했다. for _, data := range sampleDataSlice { GetStore().storeOne(&data) } 위 코드를 실행하면 저장된 모든 데이터가 동일한 값을 가지게 된다. 원인 위 코드에서 sampleDataSlice는 slice 이기 때문에 for 루프의 변수로 인덱스와 현 루프의 객체를 변수에 할당한다. 이 때, 인덱스를 사용하지 않고 그 뒤의 변수를 사용하게 될 경우 변수에는 슬라이스에 포함된 현재 요소가 지역 변수에 할당된다. 그러므로 변수에 할당되는 값은 계속 변경되지만 storeOne 함수로 전달되는 변수의 주소는 동일하기 때문에 storeOne 함수 안에서 사용한 변수는 결과적으로 제일 마지막에 지역변수에 할당했던 객체를 동일하게 .. 2020. 11. 17. 이전 1 다음