Menu
Coddy logo textTech

클래스로서의 구조체

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

Go의 구조체(Structs)는 다른 언어의 클래스와 동일한 목적을 수행합니다. 이들은 관련된 데이터를 하나의 타입으로 묶습니다.

여러 필드 타입을 가진 구조체 정의하기

type Car struct {
    Brand string
    Model string
    Year  int
    Price float64
}

필드 이름을 사용하여 인스턴스를 생성합니다.

car := Car{
    Brand: "Toyota",
    Model: "Camry",
    Year:  2023,
    Price: 28000.50,
}

필드 접근 및 수정

fmt.Println(car.Brand) // Toyota
fmt.Println(car.Year)  // 2023

car.Price = 27000.00   // 필드 수정
fmt.Println(car.Price) // 27000

구조체는 다른 구조체를 포함할 수 있습니다.

type Engine struct {
    Horsepower int
    FuelType   string
}

type Car struct {
    Brand  string
    Model  string
    Engine Engine
}

car := Car{
    Brand:  "Ford",
    Model:  "Mustang",
    Engine: Engine{Horsepower: 450, FuelType: "Gasoline"},
}
fmt.Println(car.Engine.Horsepower) // 450

구조체(Structs)는 관련된 필드들을 함께 그룹화합니다. 점 연산자(dot operator)를 사용하여 필드에 접근할 수 있으며, 복잡한 데이터 모델을 구축하기 위해 구조체 내부에 다른 구조체를 중첩할 수 있습니다.

challenge icon

챌린지

중급

다음 필드를 가진 Profile 구조체를 정의하세요:

  • Name — string
  • Email — string
  • Age — int
  • Role — string

치트 시트

Go의 구조체(Structs)는 다른 언어의 클래스와 유사하게 관련된 데이터를 하나의 타입으로 묶습니다.

여러 필드 타입을 가진 구조체를 정의합니다:

type Car struct {
    Brand string
    Model string
    Year  int
    Price float64
}

필드 이름을 사용하여 인스턴스를 생성합니다:

car := Car{
    Brand: "Toyota",
    Model: "Camry",
    Year:  2023,
    Price: 28000.50,
}

점(dot) 연산자를 사용하여 필드에 접근하고 수정합니다:

fmt.Println(car.Brand) // Toyota
car.Price = 27000.00   // 필드 수정

구조체는 다른 구조체를 포함할 수 있습니다 (중첩된 구조체):

type Engine struct {
    Horsepower int
    FuelType   string
}

type Car struct {
    Brand  string
    Model  string
    Engine Engine
}

car := Car{
    Brand:  "Ford",
    Model:  "Mustang",
    Engine: Engine{Horsepower: 450, FuelType: "Gasoline"},
}
fmt.Println(car.Engine.Horsepower) // 450

직접 해보기

package main

import "fmt"

func main() {
    var name, email, role string
    var age int
    fmt.Scan(&name, &email, &age, &role)

    p := Profile{
        Name:  name,
        Email: email,
        Age:   age,
        Role:  role,
    }

    fmt.Printf("Name: %s\n", p.Name)
    fmt.Printf("Email: %s\n", p.Email)
    fmt.Printf("Age: %d\n", p.Age)
    fmt.Printf("Role: %s\n", p.Role)
}
quiz icon실력 점검

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

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