Notice
Recent Posts
Recent Comments
Link
Doodly IT
[Go 묘공단 스터디] 포인터 본문
1) 포인터란?
포인터는 메모리 주소를 값으로 갖는 타입이다.
2) 포인터 변수의 선언과 초기화
포인터 변수의 선언은 아래와 같이한다.
var p * int
포인터의 변수 초기화는 & 연산자로 진행한다.
package main
import "fmt"
func main() {
arr := 20
var p *int
p = &arr
fmt.Println(p) // arr의 주소값출력
fmt.Println(*p) //arr에 저장된 변수값(20) 출력
}
3) 포인터 변수를 쓰는 이유
만약 아래 같은 Intial 함수를 만들어서 초기화를 시킨다고 보자.
package main
import "fmt"
func Initial(x [4][4]int64) [4][4]int64 {
for i := 0; i < 4; i++ {
for j := 0; j < 4; j++ {
x[i][j] = 0
}
}
return x
}
func main() {
var arr [4][4]int64
Initial(arr)
for i := 0; i < 4; i++ {
for j := 0; j < 4; j++ {
fmt.Print(arr[i][j])
}
fmt.Println("")
}
}
이러면 함수의 매개변수로 2차원 배열을 주고 받게 된다. 여기서 2차원 배열의 주소값을 매개변수로 사용하게 되면,
package main
import "fmt"
func Initial(x *[4][4]int) {
for i := 0; i < 4; i++ {
for j := 0; j < 4; j++ {
x[i][j] = 0
}
}
}
func main() {
var arr [4][4]int
var p = &arr
Initial(p)
for i := 0; i < 4; i++ {
for j := 0; j < 4; j++ {
fmt.Print(arr[i][j])
}
fmt.Println("")
}
}
굳이 리턴하지 않아도 배열을 초기화할 수 있다. 즉 포인터 변수를 활용해서 함수 외부에서 자유롭게 변수의 값을 수정할 수있다. (전역변수가 아니더라도!)
4) 인스턴스
인스턴스는 메모리에 할당된 데이터의 실체이다.
var data Data
'프로그래밍 > Go' 카테고리의 다른 글
[Go 묘공단 스터디] Up Down 게임 (1) | 2023.11.22 |
---|---|
[Go 묘공단 스터디] 문자열 (1) | 2023.11.22 |
[Go 묘공단 스터디] 구조체 (0) | 2023.11.15 |
[Go 묘공단 스터디]배열 (0) | 2023.11.15 |
[Go 묘공단 스터디] for문 (0) | 2023.11.15 |