Go에는 상속이 없습니다 — 대신 구조체 임베딩을 통한 **합성(composition)**을 사용합니다. 한 구조체(또는 interface)를 다른 구조체 안에 임베딩하면, 외부 타입이 내부 타입의 필드와 메서드를 직접 얻습니다. 이것이 코드 재사용에 대한 Go의 답으로, "is-a" 상속보다 "has-a" 합성을 선호합니다.
구조체 임베딩
Animal {
Name
}
Eat() {
a.Name +
}
Dog {
Animal
Breed
}
d := Dog{
Animal: Animal{Name: },
Breed: ,
}
fmt.Println(d.Name)
fmt.Println(d.Eat())
