[Go] Go 언어 포인터(Pointer) 정리

2021. 1. 15. 23:20Programming Language/Go

반응형

■ Go 언어 포인터

Go 언어는 C와 C++처럼 포인터 사용을 허용하여 메모리 주소에 직접 접근할 수 있게 하지만,

버그를 유발하기 쉬운 주소 값 연산은 허용하지 않는다.

포인터의 역할은 값에 접근하는 수단일 뿐이고, 포인터 변수가 가진 주소 값을 직접 변경할 수는 없다.


■ 포인터

1. '&' 포인터 연산자

'&' 포인터 연산자는 실제 데이터가 있는 메모리 공간의 값에 접근할때 사용한다.

예시) 숫자 10을 갖고 있는 변수의 메모리 공간의 값을 호출하시오. 

* 결과는 메모리의 값을 나타내기 때문에 필자와 다를 수 있다.
pointer := 10    

fmt.Println(&pointer)

/*
※ 출력 결과
0xc000012090
*/

2. '*' 포인터 연산자

'*' 포인터 연산자는 실제 데이터의 값에 접근할때 사용한다.

예시) data라는 변수와 data 변수의 주소값 즉, 메모리 공간의 값을 갖고 있는 address라는 변수가 있을 경우
address 변수를 활용하여 data의 값을 변경하여 호출하시오. 
// 숫자 10을 갖는 변수
data := 10    

// data의 메모리 공간의 값을 갖는 변수
address := &data    

// data의 값을 10 에서 30으로 변경
*address = 30    

fmt.Println(data)

/*
※ 출력 결과
30
*/

반응형