포인터 타입
포인터 타입 (Pointer types)
포인터는 값을 직접 들고 있는 대신, 다른 변수가 저장된 위치를 가리키는 타입이에요. 이번 장에서는 그 '가리킬 대상'을 어떻게 타입으로 표현하는지를 다뤄볼게요.
출처: Go Specification
본문
포인터 타입은 주어진 타입의 변수들을 가리키는 모든 포인터들의 집합을 뜻해요. 이때 그 포인터가 가리키는 대상 타입을 포인터의 base type(기본 타입) 이라고 불러요.
초기화되지 않은 포인터의 값은 nil이에요. 즉, 아무것도 가리키지 않는 상태를 값으로 갖는다는 뜻이죠.
포인터 타입은 문법상 별표(*) 뒤에 base type을 붙여서 표현해요.
PointerType = "*" BaseType .
BaseType = Type .
몇 가지 예시를 볼게요.
*Point
*[4]int
*Point는 Point 타입의 값을 가리키는 포인터 타입이고, *[4]int는 길이가 4인 int 배열을 가리키는 포인터 타입이에요. 별표 다음에 오는 타입이 무엇이냐에 따라 포인터가 가리킬 대상이 달라지는 거죠.
더 알아보기
- 포인터가 가리키는 대상이 되는 변수(variables) 에 대한 설명은 Variables 항목을 참고해요.
- 초기화되지 않은 값이
nil이 되는 건 값이 메모리에 어떻게 표현되는지와 관련이 있는데, Representation of values 항목에서 확인할 수 있어요.