对于 Go 语言而言,它的类型系统中没有类,因此没有真正的继承。但可以使用结构体嵌入另一个结构体来达到类似继承的效果。这种方式称为组合。下面是一个示例:
type Animal struct {
weight float32
age int
}
func (a *Animal) Eat() {
fmt.Println("Animal is eating")
}
type Dog struct {
Animal
breed string
}
func main() {
d := Dog{Animal{10.5, 2}, "Golden Retriever"}
fmt.Println(d.age) // 输出 2
fmt.Println(d.weight) // 输出 10.5
fmt.Println(d.breed) // 输出 "Golden Retriever"
d.Eat() // 输出 "Animal is eating"
}
在这个示例中,结构体 Dog 嵌入了另一个结构体 Animal。因为 Animal 拥有一个 Eat() 方法,所以可以在 Dog 中使用该方法。此外,它还可以访问 Animal 的属性。这是一个简单的例子,但通过组合可实现类似继承的概念。