当前位置: 首页 > news >正文

成华区微信网站建设/大型网站建设方案

成华区微信网站建设,大型网站建设方案,国外创意产品设计作品,免费行情网站app斗印嵌入类型 在go语言中,嵌入类型表示,在一个自定义类型中可以嵌入另一种类型。而被嵌入的类型自动拥有嵌入类型实现的接口方法以及属性。其实,这就是go语言中继承的实现机制。 (继承)属性 package mainimport ("fmt…

嵌入类型

在go语言中,嵌入类型表示,在一个自定义类型中可以嵌入另一种类型。而被嵌入的类型自动拥有嵌入类型实现的接口方法以及属性。其实,这就是go语言中继承的实现机制。

(继承)属性

package mainimport ("fmt"
)type user struct{name stringage int
}type admin struct{user	//嵌入user类型level int
}func main(){//初始化一个admin类型的对象ad := admin{user:user{name:"zhongzhong",age:25,},level:1,}//可以直接访问嵌入类型的属性fmt.Println(ad.name)fmt.Println("mian函数执行完成")
}
//zhongzhong
//mian函数执行完成复制代码

上面的代码中定义了两个类型,user和admin。在admiin中嵌入了user类型。注意,嵌入类型只需要声明类型就可以了。 在上面的代码中,我们把admin称为外部类型,user称为内部类型。

(继承)方法

除了上面的内部类型的属性自动提升到外部类型之外,内部类型实现的接口,也会提升到外部类型。看下面的代码:

package mainimport ("fmt"
)
type Speaker interface{speak(content string)
}type user struct{name stringage int
}
//使用user类型的值作为接收者实现Speaker接口
func (u user) speak(content string){fmt.Println(u.name,":",content)
}type admin struct{user	//嵌入user类型level int
}func main(){//初始化一个admin类型的对象ad := admin{user:user{name:"zhongzhong",age:25,},level:1,}//使用内部类型调用ad.user.speak("你好啊")//直接使用外部类型调用ad.speak("你好")fmt.Println("mian函数执行完成")
}
//zhongzhong : 你好啊
//zhongzhong : 你好
//mian函数执行完成复制代码

上面的代码,既可以使用admin对象来调用speak方法也可以使用admin对象的嵌入类型的user对象来调用speak。这就表示,在外部类型中,可以直接使用内部类型的方法。

覆盖方法(重写)

从上面可以看出,外部类型可以直接使用内部类型的方法,那么如果我不想使用内部类型的方法怎么办呢?看下面的代码:

package mainimport ("fmt"
)
type Speaker interface{speak(content string)
}type user struct{name stringage int
}type admin struct{user	//嵌入user类型level int
}//使用user类型的值作为接收者实现Speaker接口
func (u user) speak(content string){fmt.Println(u.name,":",content)
}//使用admin类型的值作为接收者实现Speaker接口
func (a admin) speak(content string){fmt.Println(a.name,"-",a.level,":",content)
}func main(){//初始化一个admin类型的对象ad := admin{user:user{name:"zhongzhong",age:25,},level:1,}//使用内部类型调用ad.user.speak("你好啊")//直接使用外部类型调用ad.speak("你好")fmt.Println("mian函数执行完成")
}
//zhongzhong : 你好啊
//zhongzhong - 1 : 你好
//mian函数执行完成
复制代码

从上面的输出结果可以看出,如果外部类型和内部类型实现了同样的接口,那么使用外部类型调用接口的方法的时候,就是调用外部类型实现的方法而不再是内部类型的方法。也就是说,外部类型的方法会覆盖内部类型的方法。这和java中的重写类似。

来看一个复杂点的例子:

package mainimport ("fmt"
)
type Speaker interface{speak(content string)
}type user struct{name stringage int
}type speakerA struct{propA int
}type admin struct{user	//嵌入user类型speakerA //嵌入speakerA类型level int
}//使用user类型的值作为接收者实现Speaker接口
func (u user) speak(content string){fmt.Println(u.name,":",content)
}//使用speakerA类型的值作为接收者实现Speaker接口
func (s speakerA) speak(content string){fmt.Println(s.propA,":",content)
}func main(){//初始化一个admin类型的对象ad := admin{user:user{name:"zhongzhong",age:25,},speakerA:speakerA{propA:100,},level:1,}//只能使用这种调用方式ad.user.speak("你好啊")//只能使用这种调用方式ad.speakerA.speak("你好")fmt.Println("mian函数执行完成")
}
//zhongzhong : 你好啊
//100 : 你好
//mian函数执行完成
复制代码

上面的代码,admin嵌入了user,speakerA两种类型,而且这两种类型都实现了Speaker接口。造成在使用外部类型对象调用的时候,go语言不知道如何处理。所以在这里需要明确的使用内部类型对象来调用对应的方法。

转载于:https://juejin.im/post/5a2b4e605188252ae93addf0

http://www.lbrq.cn/news/1452763.html

相关文章:

  • 做网站做的/推广普通话的重要意义
  • 新公司做网站怎么弄/营销活动策划
  • 蓟州农家院如何做网站/阿里云域名注册网站
  • 网站托管服务器/今日新闻摘抄二十条
  • 自己做网站原始代码/2345网址导航桌面版
  • 网站建设费能不能认定为广告费/搜索引擎seo如何赚钱
  • 游戏开发网/厦门谷歌seo公司
  • 政府机关单位网站建设方案/如何快速提升网站关键词排名
  • 用国外网站 图片做自媒体/专业培训seo的机构
  • 工商局网站建设查不到/小型项目外包网站
  • 学计算机网站建设/小红书外链管家
  • 广西贺州建设局网站/哈尔滨网络seo公司
  • 营销型网站建设网站建设制作/百度手机助手下载安装最新版
  • 哪个网站做漂流瓶任务/seo教程技术整站优化
  • 网站鼠标悬停动态效果代码/怎么做游戏推广员
  • 网站建设比较合理的流程/深圳关键词推广排名
  • 广州网站推广哪家好/百度网站推广怎么做
  • 茂名网站制作网页/网络平台有哪些?
  • ic外贸网站建设/百家号优化
  • 网站建设怎么添加图片上去/成都网站快速排名
  • 国外文件传输网站/网址缩短在线生成器
  • 可以建网站的软件/网页设计基础
  • 网站建设内容清单/营销网络推广哪家好
  • 怎样做一个免费的网站/内容营销策略
  • 中专网站建设与数据管理是什么/福州seo推广公司
  • 永泰县网站集约化建设/bt磁力在线种子搜索神器下载
  • 做网站要多少的服务器/网页推广怎么做的
  • 如何做镜像别人网站/php视频转码
  • 代做备案网站/百度搜索排名优化哪家好
  • 深圳网站建设机构/百度客服电话人工服务热线
  • 笔记本电脑联想T14重启后无法识别外置红米屏幕
  • go学习笔记:panic是什么含义
  • 电商系统想撑住大流量?ZKmall开源商城靠微服务 + Spring Boot3 解决单体架构难题
  • 前后端交流
  • 使用AndroidStudio调试Framework源码
  • GitOps:云原生时代的革命性基础设施管理范式