Go 언어

본문 바로가기
사이트 내 전체검색


Go 언어
Go 언어

1. 포인터 사용하기

페이지 정보

작성자 관리자 댓글 0건 조회 2,532회 작성일 19-03-13 08:20

본문

1. 포인터 사용하기

Go 언어는 메모리 주소를 표현하는 포인터를 지원한다.


var 변수명 *자료형



package main

import "fmt"

func main() {

 var numPtr *int // 포인터형 변수를 선언하면 nil로 초기화됨

 fmt.Println(numPtr) // nil

} 


C언어와 달리 *를 자료형 앞에 붙인다. 그리고 포인터형 변수를 선언하면 nil로 초기화 된다.


Go 언어는 nil로 사용한다.

C언어에서 NULL이 정수 0으로 정의되어 있지만 Go언어에서 nil은 숫자 0이 아니다.




포인터변수 = new(자료형)



package main

import "fmt"

func main() {

 var numPtr *int = new(int)

 fmt.Println(numPtr) // 0xc000064080: 메모리 주소. 시스템 마다, 실행할 때마다 달라짐

} 


포인터형 변수에 값을 대입하거나, 가져오려면 역참조(dereference)를 사용한다.


*포인터_변수명


package main

import "fmt"

func main() {

 var numPtr *int = new(int) // new 함수로 공간 할당

 *numPtr = 1          // 역참조로 포인터형 변수에 값을 대입

 fmt.Println(*numPtr) // 1: 포인터형 변수에서 값을 가져오기

} 


일반변수에 참조(레퍼런스)를 사용하면 포인터형 변수에 대입할 수 있다.


&변수명


package main

import "fmt"

func main() {

 var num int = 1
 var numPtr *int = &num // 참조로 num 변수의 메모리 주소를 구하여
                        // numPtr 포인터 변수에 대입

 fmt.Println(numPtr) // 0xc000064080: numPtr 포인터 변수에 저장된 메모리 주소
 fmt.Println(&num)   // 0xc000064080: 참조로 num 변수의 메모리 주소를 구함

} 



함수에서 포인터형 매개변수 사용하기


package main

import "fmt"

func hello(n *int) {

 *n = 2 // 포인터 변수 n를 역참조하여 메모리에 2를 대입

}

func main() {

 var n int = 1

 hello(&n) // 1이 들어있는 변수 n의 메모리 주소를 hello 함수에 넘김

 fmt.Println(n) // 2: hello 함수에서 n의 메모리 공간에 2를 대입했으므로 바깥에 있는 n의 값이 바뀌었음

}
 

댓글목록

등록된 댓글이 없습니다.


개인정보취급방침 서비스이용약관 모바일 버전으로 보기 상단으로

TEL. 063-469-4551 FAX. 063-469-4560 전북 군산시 대학로 558
군산대학교 컴퓨터정보공학과

Copyright © www.leelab.co.kr. All rights reserved.