Menu
Coddy logo textTech

구조체 포인터

Coddy GO 여정의 기초 섹션에 포함된 레슨 — 109개 중 97번째.

구조체를 다룰 때, 다른 타입과 마찬가지로 구조체에 대한 포인터를 생성할 수 있습니다. 이는 큰 구조체를 효율적으로 전달하는 데 유용합니다.

Person 구조체를 정의하고 이에 대한 포인터를 생성합니다:

type Person struct {
    name string
    age  int
}

func main() {
    person := Person{name: "Alice", age: 30}
    
    // 구조체에 대한 포인터 생성
    personPtr := &person
    
    // 포인터를 통해 필드에 접근
    fmt.Println(personPtr.name)
    fmt.Println(personPtr.age)
}

출력 결과는 포인터를 통해 필드에 접근할 수 있음을 보여줍니다:

Alice
30

포인터를 통해 필드를 수정할 수도 있습니다:

personPtr.age = 31
fmt.Println(person.age)  // 출력: 31
challenge icon

챌린지

초급

이 챌린지에서는 Go에서 구조체 포인터를 다루는 연습을 합니다. nameage 필드를 가진 Person 구조체가 있습니다. 여러분의 과제는 구조체 포인터를 사용하여 사람의 정보를 업데이트하는 것입니다.

코드는 이미 Person 구조체와 그에 대한 포인터를 생성합니다. 포인터를 통해 사람의 정보를 수정해야 합니다.

치트 시트

& 연산자를 사용하여 구조체에 대한 포인터를 생성합니다:

type Person struct {
    name string
    age  int
}

person := Person{name: "Alice", age: 30}
personPtr := &person

포인터를 통해 구조체 필드에 접근하고 수정합니다:

// 필드 접근
fmt.Println(personPtr.name)
fmt.Println(personPtr.age)

// 필드 수정
personPtr.age = 31

직접 해보기

package main

import "fmt"

// name과 age 필드를 가진 Person 구조체
type Person struct {
	name string
	age  int
}

func main() {
	// Person 구조체 생성
	person := Person{
		name: "John",
		age:  25,
	}

	// Person 구조체에 대한 포인터 생성
	personPtr := &person

	// 원본 person 정보 출력
	fmt.Println("Original person:")
	fmt.Printf("Name: %s, Age: %d\n", person.name, person.age)

	// TODO: 포인터를 사용하여 person의 이름을 "Jane"으로, 나이를 30으로 변경하세요.
	// 힌트: 점 표기법(dot notation)을 사용하여 포인터를 통해 구조체 필드에 접근할 수 있습니다.
	

	// 업데이트된 person 정보 출력
	fmt.Println("Updated person:")
	fmt.Printf("Name: %s, Age: %d\n", person.name, person.age)
}
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

기초의 모든 레슨