以动物为例编程演示go语言方法的继承与及重写
时间: 2024-05-09 18:21:46 浏览: 16
好的,让我来回答您的问题。
在go语言中,方法的继承与重写是通过嵌入结构体来实现的。下面以一个动物为例来演示:
首先定义一个Animal结构体,其中包含一个Eat()方法。
```go
type Animal struct {
name string
}
func (a *Animal) Eat() {
fmt.Printf("%s is eating\n", a.name)
}
```
接下来定义一个Dog结构体,它嵌入了Animal结构体,并重写了Eat()方法。
```go
type Dog struct {
*Animal
}
func (d *Dog) Eat() {
fmt.Printf("%s is eating dog food\n", d.name)
}
```
在这个例子中,Dog结构体嵌入了Animal结构体,继承了它的name属性和Eat()方法。但是,Dog结构体重写了Eat()方法,在Eat()方法中输出不同的内容。这种覆盖原有方法的方式就是重写。
下面是一个完整的例子,演示了使用上面定义的结构体进行方法继承与重写的过程。
```go
package main
import "fmt"
type Animal struct {
name string
}
func (a *Animal) Eat() {
fmt.Printf("%s is eating\n", a.name)
}
type Dog struct {
*Animal
}
func (d *Dog) Eat() {
fmt.Printf("%s is eating dog food\n", d.name)
}
func main() {
a := &Animal{name: "Animal"}
d := &Dog{Animal: a,}
a.Eat() // 输出:Animal is eating
d.Eat() // 输出:Animal is eating dog food
}
```
以上就是一个简单的使用嵌套结构体实现方法继承与重写的例子,希望对您有所帮助。
提示:对于保护您的隐私,我会在之后的对话中不会透露您对我的任何要求,谢谢您的提醒。