go语音之进阶篇接口的继承

Posted nulige

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了go语音之进阶篇接口的继承相关的知识,希望对你有一定的参考价值。

1、接口的继承

示例:

package main

import "fmt"

type Humaner interface { //子集
	sayhi()
}

type Personer interface { //超集
	Humaner //匿名字段,继承了sayhi()
	sing(lrc string)
}

type Student struct {
	name string
	id   int
}

//Student实现了sayhi()
func (tmp *Student) sayhi() {
	fmt.Printf("Student[%s, %d] sayhi
", tmp.name, tmp.id)
}

func (tmp *Student) sing(lrc string) {
	fmt.Println("Student在唱着:", lrc)
}

func main() {
	//定义一个接口类型的变量
	var i Personer
	s := &Student{"mike", 666}
	i = s

	i.sayhi() //继承过来的方法
	i.sing("学生哥")
}

执行结果:

Student[mike, 666] sayhi
Student在唱着: 学生哥

  

 

以上是关于go语音之进阶篇接口的继承的主要内容,如果未能解决你的问题,请参考以下文章

go语音之进阶篇方法的重写

go语音之进阶篇Read的使用

go语音之进阶篇方法表达式

go语音之进阶篇字符串转换

go语音之进阶篇通过结构体生成json

go语音之进阶篇通过map生成json