栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

类型组成:覆盖接口类型

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

类型组成:覆盖接口类型

通过

s.PrintViaMethod()
,您正在调用 提升的
方法
FakeService.Service.PrintViaMethod()
,方法接收者将是
FakeService.Service
哪种类型
Service
,并
Service.PrintViaMethod()
调用
Service.Client.Print()
何处
Service.Client
是哪种类型
PrinterService
,这就是它打印的原因
"PrinterService"

在Go中有嵌入,但是没有多态性。当您将类型嵌入结构中时,嵌入类型的方法将得到提升,并将成为嵌入类型的方法集的一部分。但是,当调用这种升级方法时,它将获得
嵌入值 作为接收者,而不是 嵌入者

要实现所需的功能,必须

PrintViaMethod()
通过为
FakeService
类型(带有
FakeService
接收者类型)提供其实现,并在其内部调用来“覆盖”该方法
FakeService.Client.Print()

这样做

s.PrintViaMethod()
将表示该
FakeService.PrintViaMethod()
方法,因为该方法将位于
PrintViaMethod()
存在(而不是
FakeService.Service.PrintViaMethod()
)的最浅深度。规格:选择器中对此进行了详细说明。

例如:

func (fs FakeService) PrintViaMethod() {    fs.Client.Print()}

然后输出将是(在Go Playground上尝试):

SomeOtherService


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/633154.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号