Menu
Coddy logo textTech

구조체 초기화

Coddy GO 여정의 객체 지향 프로그래밍 섹션에 포함된 레슨 — 107개 중 9번째.

Go는 구조체를 초기화하는 여러 가지 방법을 제공하며, 각 방법은 서로 다른 상황에서 유용합니다.

이름이 지정된 필드 초기화

type Person struct {
    Name string
    Age  int
    City string
}

p1 := Person{
    Name: "Alice",
    Age:  25,
    City: "New York",
}

위치 기반 초기화 (순서는 필드 선언과 일치해야 합니다)

p2 := Person{"Bob", 30, "London"}

제로 값 초기화 (모든 필드가 기본값을 가짐)

p3 := Person{}
// Name: "", Age: 0, City: ""

부분 초기화 (설정되지 않은 필드는 제로 값을 가집니다)

p4 := Person{Name: "Charlie"}
// Name: "Charlie", Age: 0, City: ""

&를 사용한 구조체 포인터

p5 := &Person{
    Name: "Diana",
    Age:  28,
    City: "Paris",
}
fmt.Println(p5.Name) // Diana

var를 사용한 다음 필드 할당하기

var p6 Person
p6.Name = "Eve"
p6.Age = 22

이름이 지정된 필드 초기화는 가장 일반적이고 가독성이 좋은 방식입니다. 구조체에 대한 포인터가 필요할 때 &를 사용하세요.

challenge icon

챌린지

중급

서로 다른 초기화 방법을 사용하여 세 개의 Player 객체를 생성하세요:

  • player1: 입력 값을 사용한 명명된 필드 초기화
  • player2: Name: "Guest", Class: "Novice", HitPoints: 50을 사용한 명명된 필드 초기화
  • player3: var 선언을 사용한 후 각 필드를 개별적으로 할당

치트 시트

Go는 구조체를 초기화하는 여러 가지 방법을 제공합니다:

필드 이름 지정 초기화 (가장 일반적이고 가독성이 좋음):

p1 := Person{
    Name: "Alice",
    Age:  25,
    City: "New York",
}

위치 기반 초기화 (순서가 필드 선언과 일치해야 함):

p2 := Person{"Bob", 30, "London"}

제로 값(Zero-value) 초기화 (모든 필드가 기본값을 가짐):

p3 := Person{}
// Name: "", Age: 0, City: ""

부분 초기화 (설정되지 않은 필드는 제로 값을 가짐):

p4 := Person{Name: "Charlie"}
// Name: "Charlie", Age: 0, City: ""

&를 사용한 구조체 포인터:

p5 := &Person{
    Name: "Diana",
    Age:  28,
}
fmt.Println(p5.Name) // Diana

var 사용 후 필드 할당:

var p6 Person
p6.Name = "Eve"
p6.Age = 22

직접 해보기

package main

import "fmt"

func main() {
    var name, class string
    var hp int
    fmt.Scan(&name, &class, &hp)

    // TODO: 입력된 값들을 사용하여 이름이 지정된 필드 초기화 방식으로 player1을 생성하세요.

    // TODO: 이름이 지정된 필드 초기화 방식을 사용하여 player2를 생성하세요:
    // Name: "Guest", Class: "Novice", HitPoints: 50

    // TODO: var 선언을 사용하여 player3를 생성한 후, 필드 값을 할당하세요:
    // Name: "Hero", Class: "Knight", HitPoints: 200

    fmt.Printf("Player 1: %s (%s) - HP: %d\n", player1.Name, player1.Class, player1.HitPoints)
    fmt.Printf("Player 2: %s (%s) - HP: %d\n", player2.Name, player2.Class, player2.HitPoints)
    fmt.Printf("Player 3: %s (%s) - HP: %d\n", player3.Name, player3.Class, player3.HitPoints)
}
quiz icon실력 점검

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

객체 지향 프로그래밍의 모든 레슨