[go] 포인터 데이터 타입

프로그래밍에서 포인터(pointer)는 다른 변수나 값의 메모리 주소를 가리키는 변수입니다. Go 언어에서도 포인터를 사용할 수 있으며, 포인터 데이터 타입은 변수의 메모리 주소를 저장하는 데 사용됩니다.

포인터 선언

Go 언어에서는 포인터를 선언할 때 * 기호를 사용합니다. 예를 들어, int 형 변수를 가리키는 포인터를 선언하려면 다음과 같이 작성합니다.

var ptr *int

위의 예제에서 ptrint 형 변수를 가리키는 포인터입니다.

포인터 사용

선언된 포인터를 사용하여 메모리 주소에 저장된 값을 역참조하여 가져올 수 있습니다. 메모리 주소에 저장된 값을 변경하려면 역참조 연산자 *를 사용하여 값을 변경할 수 있습니다.

var a int = 10
var ptr *int

ptr = &a // a의 메모리 주소를 ptr에 할당
fmt.Println(*ptr) // ptr이 가리키는 주소에 저장된 값 출력

*ptr = 20 // ptr이 가리키는 주소에 저장된 값 변경
fmt.Println(a) // 변경된 값 출력

위의 예제에서 & 연산자를 사용하여 변수의 메모리 주소를 얻어와 포인터에 할당한 후, 포인터를 사용하여 변수의 값을 변경하고 출력합니다.

포인터 사용 시 주의점

포인터를 사용할 때는 메모리 주소에 대한 안전한 접근을 보장해야 합니다. 잘못된 포인터 사용은 메모리 오류를 발생시킬 수 있으므로 주의해야 합니다. 또한, Go 언어에서는 포인터 산술 연산을 지원하지 않으므로 주의해야 합니다.

References