클래스로서의 구조체
Coddy GO 여정의 객체 지향 프로그래밍 섹션에 포함된 레슨. 107개 중 6번째.
Go의 struct는 다른 언어의 클래스와 같은 용도로 사용됩니다. 관련 데이터를 하나의 type으로 묶습니다.
Define 여러 type의 field를 갖는 struct
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) // 27000struct는 다른 struct를 포함할 수 있습니다
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) // 450struct는 관련된 fields를 함께 그룹화합니다. 점 연산자를 사용하여 fields에 액세스할 수 있으며, 복잡한 데이터 모델을 만들기 위해 다른 struct 안에 struct를 중첩할 수 있습니다.
챌린지
중급다음 필드를 포함하는 Profile struct를 정의하세요:
Name: stringEmail: stringAge: intRole: string
직접 해보기
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요약 - 파일 파서직접 연습해 보세요: 온라인 Go 컴파일러