GO · 기초 문법
포인터 — & * 기초
Go의 포인터. C처럼 직접 메모리 주소를 다루지만 포인터 연산은 없습니다.
기초 문법입문pointer포인터&*new
핵심 설명
Go의 포인터. C처럼 직접 메모리 주소를 다루지만 포인터 연산은 없습니다.
Go code
package main
import "fmt"
func increment(n *int) {
*n++ // 역참조로 원본 수정
}
func newInt(val int) *int {
// 로컬 변수 주소 반환 OK — Go GC가 관리
return &val
}
func main() {
x := 42
p := &x // p는 x의 주소를 가리키는 포인터
fmt.Println("값:", x) // 42
fmt.Println("주소:", p) // 0xc0000b4008 (예시)
fmt.Println("역참조:", *p) // 42
*p = 100 // 포인터를 통해 값 변경
fmt.Println("변경 후:", x) // 100
// 함수로 포인터 전달
increment(&x)
fmt.Println("increment 후:", x) // 101
// new() — 제로값으로 초기화된 포인터 반환
q := new(int) // *int, 값은 0
*q = 50
fmt.Println("new:", *q)
// nil 포인터 확인
var ptr *int
fmt.Println("nil?", ptr == nil) // true
// fmt.Println(*ptr) // 패닉! nil 역참조
r := newInt(99)
fmt.Println("힙 할당:", *r) // 99
}학습 팁
Go는 포인터 연산(p++)을 허용하지 않습니다. 이는 의도적인 설계로, 메모리 안전성을 높입니다.
주의할 점
nil 포인터를 역참조(*ptr)하면 런타임 패닉입니다. 포인터를 사용하기 전에 항상 ptr != nil을 확인하세요.
자주 묻는 질문
포인터 — & * 기초란 무엇인가요?
Go의 포인터. C처럼 직접 메모리 주소를 다루지만 포인터 연산은 없습니다.
포인터 — & * 기초 학습 시 주의할 점은 무엇인가요?
nil 포인터를 역참조( *ptr )하면 런타임 패닉입니다. 포인터를 사용하기 전에 항상 ptr != nil 을 확인하세요.
Continue Learning
Go 학습을 이어가세요
총 200개의 독립 HTML 학습 문서 중 하나입니다. 각 문서는 고유 URL과 canonical 메타데이터를 가집니다.