이름에 ptr이 붙어있지만 포인터가 아니라 어디까지나 기호 없는 정수형(물론 ptr이 붙은 이유가 있음)

데이터형의 크기가 정해져있지 않아서 모든 크기의 양의 정수를 가리킬 수 있음(예를 들어 1000바이트짜리 데이터도 하나의 정수로 이 자료형에 담을 수 있다.)

그러나 평범한 정수들 넣으라고 만들어진 게 아님


원래 go에서는 포인터 연산이 불가능한데


unsafe.Pointer는 다른 종류의 포인터들과 상호변환 가능하고

uintptr은 unsafe.Pointer와 자유롭게 상호변환 가능하고

uintptr은 정수형이므로 자유롭게 연산이 가능


그렇다면 unsafe.Pointer를 매개체로

특정 포인터가 가진 값(어느 데이터의 주소값)을 uintptr에 넣어 연산을 할 수 있음


권장하지 않지만 그래도 꼭 매뉴얼하게 메모리를 다루어야 겠다는 사람들을 위해 만든

어쩔 수 없는 구멍들 중 하나