임베디드 구조체
Coddy GO 여정의 기초 섹션에 포함된 레슨. 109개 중 99번째.
Go에서는 하나의 구조체를 다른 구조체 안에 포함하여 합성 관계를 만들 수 있습니다. 이것이 Go에서 상속을 구현하는 방식입니다.
하나가 다른 하나에 포함된 두 개의 구조체를 정의하세요:
type Address struct {
city string
state string
}
type Person struct {
name string
age int
Address // 임베디드 구조체 (필드 이름 없음)
}
func main() {
person := Person{
name: "Alice",
age: 30,
Address: Address{city: "Portland", state: "Oregon"},
}
// 필드에 직접 접근
fmt.Println(person.city) // 임베디드 필드에 접근
}
출력은 내장된 구조체의 필드에 직접 접근할 수 있음을 보여 줍니다:
Portland챌린지
초급이 챌린지에서는 Go에서 임베디드 구조체(합성)를 사용하는 방법을 연습합니다.
두 개의 구조체가 있습니다. Address와 Person입니다. 사람이 주소 필드에 직접 접근할 수 있도록 Person 구조체에 Address 구조체를 임베드해야 합니다.
여러분의 과제는 Address 구조체를 임베드하도록 Person 구조체 정의를 완성하는 것입니다. main의 출력 문은 이미 사람 인스턴스에서 주소 필드를 직접 읽습니다(person.Street, person.City, person.ZipCode). Address를 임베드하면 컴파일됩니다.
직접 해보기
package main
import "fmt"
// Address struct에는 위치 정보가 들어 있습니다
type Address struct {
Street string
City string
ZipCode string
}
// Person struct는 Address struct를 임베딩해야 합니다
type Person struct {
Name string
Age int
// TODO: 여기에 Address struct를 임베딩하세요 (한 줄만)
}
func main() {
// 주소 정보가 포함된 새 person을 생성합니다
person := Person{
Name: "Alice",
Age: 30,
Address: Address{
Street: "123 Main St",
City: "Wonderland",
ZipCode: "12345",
},
}
// 주소를 포함한 person 정보를 출력합니다
fmt.Println("Name:", person.Name)
fmt.Println("Age:", person.Age)
// person 인스턴스에서 주소 필드를 직접 출력합니다
fmt.Println("Street:", person.Street)
fmt.Println("City:", person.City)
fmt.Println("ZipCode:", person.ZipCode)
}
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
기초의 모든 레슨
2변수와 기본 자료형
변수란 무엇인가`:=`를 이용한 타입 추론정수 (int)부동 소수점 수불리언 (Booleans)문자열 (Strings)제로 값 (Zero Values)상수명명 규칙요약 - 변수와 타입직접 연습해 보세요: 온라인 Go 컴파일러