Go言語で継承を実現!構造体埋め込みの基本と応用
Go言語では、他のオブジェクト指向言語のような継承機構は提供されていませんが、構造体の入れ子とインターフェースを使って同様の機能を実現することができます。
構造体のネストは、継承のような機能を実現することができます。子構造体は親の構造体のフィールドを含むことができ、それによってフィールドの継承が実現されます。例えば:
type Animal struct {
Name string
}
type Dog struct {
Animal
Breed string
}
func main() {
dog := Dog{
Animal: Animal{
Name: "Buddy",
},
Breed: "Labrador",
}
fmt.Println(dog.Name) // Output: Buddy
}
別の方法は、インターフェースを使用して継承のような機能を実装することです。 構造体がインターフェースを実装すると、そのインターフェースで定義されたメソッドを呼び出すことができます。 例えば:
type Animal interface {
GetName() string
}
type Dog struct {
Name string
}
func (d Dog) GetName() string {
return d.Name
}
func main() {
var animal Animal
dog := Dog{
Name: "Buddy",
}
animal = dog
fmt.Println(animal.GetName()) // Output: Buddy
}
Go言語には従来の継承機構は提供されていませんが、構造体のネストやインターフェースを使用することで同様の機能を実現することができます。