1.6.3 结构体继承
在Go语言中,
type name struct{}结构体就相当于其他语言中的class(类)的概念其他语言中,方法是直接写在类里面。Go语言中,对于该结构体,如果存在方法,则是以
func (结构体名) 方法名 {}的方式来声明Go语言中没有原生继承。但是可以使用
interface实现,也叫组合;是使用组合来实现继承的举例:
父类结构体,有两个结构体方法
type Father struct { Name string } func (entity Father) Work() { // ... } func (entity Father) Study() { // ... }创建一个子类,将
Father结构体添加进去,变成其中的一个成员变量type Child struct { Father // ... }这样,子类
Child就可以直接调用父类的方法了,示例如下:child := Child() child.Study()
按照常规理解,子类调用父方法,应写成
child.Father.Study(),但Go语言做了想滚优化,直接调用方法也可以找到父类中的方法子类改写父类中的方法:
func (entity Child) Study { entity.Father.Study() // ... }
Last updated