博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
go语言之进阶篇接口的定义和实现以及接口的继承
阅读量:4982 次
发布时间:2019-06-12

本文共 1277 字,大约阅读时间需要 4 分钟。

1、接口的定义和实现以及接口的继承

示例:

package mainimport "fmt"//定义接口类型type Humaner interface {	//方法,只有声明,没有实现,由别的类型(自定义类型)实现	sayhi()}type Student struct {	name string	id   int}//Student实现了此方法func (tmp *Student) sayhi() {	fmt.Printf("Student[%s, %d] sayhi\n", tmp.name, tmp.id)}type Teacher struct {	addr  string	group string}//Teacher实现了此方法func (tmp *Teacher) sayhi() {	fmt.Printf("Teacher[%s, %s] sayhi\n", tmp.addr, tmp.group)}type MyStr string//MyStr实现了此方法func (tmp *MyStr) sayhi() {	fmt.Printf("MyStr[%s] sayhi\n", *tmp)}//定义一个普通函数,函数的参数为接口类型//只有一个函数,可以有不同表现,多态func WhoSayHi(i Humaner) {	i.sayhi()}func main() {	s := &Student{"mike", 666}	t := &Teacher{"bj", "go"}	var str MyStr = "hello mike"	//调用同一函数,不同表现,多态,多种形态	WhoSayHi(s)	WhoSayHi(t)	WhoSayHi(&str)	//创建一个切片	x := make([]Humaner, 3)	x[0] = s	x[1] = t	x[2] = &str	//第一个返回下标,第二个返回下标所对应的值	for _, i := range x {		i.sayhi()	}}func main01() {	//定义接口类型的变量	var i Humaner	//只是实现了此接口方法的类型,那么这个类型的变量(接收者类型)就可以给i赋值	s := &Student{"mike", 666}	i = s	i.sayhi()	t := &Teacher{"bj", "go"}	i = t	i.sayhi()	var str MyStr = "hello mike"	i = &str	i.sayhi()}

#执行结果:

Student[mike, 666] sayhiTeacher[bj, go] sayhiMyStr[hello mike] sayhiStudent[mike, 666] sayhiTeacher[bj, go] sayhiMyStr[hello mike] sayhi

  

 

转载于:https://www.cnblogs.com/nulige/p/10253762.html

你可能感兴趣的文章
数据库 join
查看>>
AES加密工具类[亲测可用]
查看>>
方法区
查看>>
Django-----ORM
查看>>
ARCGIS部分刷新
查看>>
发 零 食
查看>>
poj3613:Cow Relays(倍增优化+矩阵乘法floyd+快速幂)
查看>>
洛谷P1886 滑动窗口
查看>>
Shell编程(二)Bash中调用Python
查看>>
主动与被动监控 拓扑图组合图 自定义监控
查看>>
SQL总结(一)基本查询
查看>>
PDF分割--可脱离python环境执行,可传参数,可弹窗的PC端小工具
查看>>
cas-client-core单点登录排除不需要拦截的URL
查看>>
OCR技术浅探 : 文字定位和文本切割(2)
查看>>
jmeter集合点
查看>>
Java类代码块执行顺序
查看>>
克鲁斯卡尔(模板题)
查看>>
汉字转拼音
查看>>
Python中Web框架编写学习心得
查看>>
dataTable/dataSet转换成Json格式
查看>>