클래스로서의 구조체
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)를 사용하여 필드에 접근할 수 있으며, 복잡한 데이터 모델을 구축하기 위해 구조체 내부에 다른 구조체를 중첩할 수 있습니다.
챌린지
중급다음 필드를 가진 Profile 구조체를 정의하세요:
Name— stringEmail— stringAge— intRole— 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)
}이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
객체 지향 프로그래밍의 모든 레슨
8에러 처리와 OOP
error 인터페이스사용자 정의 에러 타입에러 래핑 (fmt.Errorf)센티넬 에러errors.Is()와 errors.As()Panic, Defer, Recover요약 - 파일 파서