
171
6
장
포인터
이 시간은 매우 짧다는 것을 알고 있어야 한다. 대부분의 경우에서 포인터의 사용과 값의 차이
는 프로그램 성능에 영향을 주지 않는다. 하지만 함수 간에 메가바이트 데이터를 전달한다면,
데이터를 변경할 수 없는 경우에도 포인터 사용을 고려해보자.
i7
-
8700
CPU
에
32GB
의
RAM
을 가진 컴퓨터에서 모든 성능데이터를 구했다. 각자 관련한
성능 테스트를 해보고 싶다면 깃허브
3
의 예제 코드를 이용해서 해보도록 하자.
6.6
제로 값과 값없음의 차이
Go
에서 포인터의 다른 일반적인 사용은 제로 값이 할당된 변수나 항목과 아무런 값도 할당되
지 않은 변수나 항목의 차이를 나타낼 수 있다. 이런 구분이 프로그램에서 중요하다면 할당되
지 않은 변수나 구조체 항목을 나타내기 위해
nil
포인터를 사용하자.
포인터는 또한 변경 가능함을 나타내므로 이런 패턴을 사용할 때는 주의를 해야 한다. 함수에
서 포인터를
nil
로 설정하고 반환하는 것보다 맵을 다루면서 살펴봤던 값과 불리언을 반환하
는 콤마
OK
관용구를 사용하자.
nil
포인터를 파라미터나 파라미터의 한 항목으로 넘긴다면, 값을 어디에도 저장할 수 없기 때
문에 함수 내에서 값을 설정할 수가 없다는 것을 기억하자.
nil
이 아닌 값을 포인터로 전달하더
라도 해당 동작을 문서화하지 않는 한 수정하지 않도록 ...