阅读量:4
在Go语言中,我们不使用传统意义上的继承,而是通过组合和接口实现类似继承的功能。要实现类似继承的效果,我们可以使用嵌入结构体和接口。下面是一个例子:
package main
import (
"fmt"
)
// 基类(结构体)
type Animal struct {
Name string
}
// 方法,实现类似继承
func (a *Animal) Speak() {
fmt.Println("The animal makes a sound")
}
// 子类(结构体),嵌入基类
type Dog struct {
Animal // 嵌入Animal结构体,实现类似继承
Breed string
}
// 重写方法
func (d *Dog) Speak() {
fmt.Println("The dog barks")
}
// 接口
type Runner interface {
Run()
}
// 为Dog类型实现Runner接口
func (d *Dog) Run() {
fmt.Println("The dog runs")
}
func main() {
myDog := &Dog{
Animal: Animal{Name: "Buddy"},
Breed: "Golden Retriever",
}
myDog.Speak() // 输出:The dog barks
myDog.Run() // 输出:The dog runs
var r Runner = myDog // 将Dog类型的变量赋值给Runner接口类型的变量
r.Run() // 输出:The dog runs
}
在这个例子中,我们创建了一个Animal结构体,它有一个Speak方法。然后我们创建了一个Dog结构体,它嵌入了Animal结构体,这样Dog就继承了Animal的方法。我们还重写了Speak方法,以实现多态。
此外,我们还定义了一个Runner接口,它有一个Run方法。我们为Dog类型实现了Runner接口,这样Dog就可以被认为是一个Runner。这就是Go语言中实现类似继承的方法。
以上就是关于“Go语言结构体继承如何实现”的相关介绍,筋斗云是国内较早的云主机应用的服务商,拥有10余年行业经验,提供丰富的云服务器、租用服务器等相关产品服务。云服务器资源弹性伸缩,主机vCPU、内存性能强悍、超高I/O速度、故障秒级恢复;电子化备案,提交快速,专业团队7×24小时服务支持!
简单好用、高性价比云服务器租用链接:https://www.jindouyun.cn/product/cvm