너가 요청한 포인터 응용 예제들을 간단하고 핵심만 딱 짚는 예시들로 정리해줄게.
총 3가지로 나눠서 설명할게:
- 구조체 포인터
- 배열 포인터
- 함수 인자에 포인터 전달
1️⃣ 구조체 포인터
📌 개념
구조체(예: type Person struct)의 주소를 포인터로 다루면
해당 구조체 안의 값들을 직접 변경할 수 있음.
✅ 예시
type Person struct {
name string
age int
}
func main() {
p := Person{name: "Alice", age: 25}
ptr := &p // 구조체 포인터
ptr.age = 30 // 포인터를 통해 구조체 내부 값 변경
fmt.Println(p.age) // 출력: 30
}
🧠 ptr.age는 사실 (*ptr).age를 축약한 문법이야.
2️⃣ 배열 포인터
📌 개념
배열 자체의 주소를 포인터로 받으면, 배열 전체를 가리킬 수 있음.
✅ 예시
func main() {
arr := [3]int{1, 2, 3}
ptr := &arr // [3]int 타입의 배열을 가리키는 포인터
(*ptr)[0] = 100
fmt.Println(arr) // 출력: [100 2 3]
}
🧠 배열 포인터는 *[3]int 타입이며, (*ptr)[i] 형식으로 접근해야 해.
3️⃣ 함수 인자로 포인터 전달
📌 개념
값이 아닌 주소를 전달해서, 함수 내부에서 원본을 수정할 수 있게 함.
✅ 예시
func changeValue(n *int) {
*n = 999
}
func main() {
num := 10
changeValue(&num)
fmt.Println(num) // 출력: 999
}
🧠 &num을 넘기면 num의 주소가 전달되고,
*n = 999로 실제 num 값이 바뀜.
✅ 요약 표
케이스 | 설명 | 포인트 |
구조체 포인터 | 구조체 필드 직접 수정 가능 | ptr.field = ... |
배열 포인터 | 배열 전체를 가리킴 | (*ptr)[i] = ... |
함수에 포인터 전달 | 함수 내에서 외부 변수 수정 가능 | *n = ... |
원한다면 각 예제를 실행 가능한 하나의 파일로도 정리해줄게.
어떤 예제가 더 궁금하거나 확장하고 싶은 주제 있어?
'언어 및 도구들 공부 > Go' 카테고리의 다른 글
빈 식별자, blank identifier, _ (0) | 2025.04.04 |
---|---|
Go) Unmarshal과 포인터 (0) | 2025.04.04 |
Go 포인터 공부 4 - 구조체 포인터로 접근하기 (0) | 2025.04.03 |
Go 포인터 공부 2 (0) | 2025.03.29 |
Go의 main 함수와 main 패키지 (0) | 2024.12.26 |