golang struct 实现 interface的方法
golang中,一般strcut包含interface类型后,struct类型都需要实现interface导出的接口,从而成为相应的interface接口类。
实际上,struct包含interface之后,并不需要实现interface的接口,也能成为interface接口类。
代码如下:
typenewErinterface{
New()
}
typetestInterfaceinterface{
newEr
Done()<-chanstruct{}
}
typekkTeststruct{
testInterface
}
funcNewTest()newEr{
returnkkTest{}
}
funcmain(){
kk:=NewTest()
i,ok:=kk.(testInterface)
fmt.Println(i,ok)
ch:=i.Done()
fmt.Println(ch)
}
其中 i,ok:=kk.(testInterface) 测试成功,也就是说kkTest 已经是testInterface接口类,但是后续ch:=i.Done() 引发panic,这个也是预料之内的。
相关的应用可以看context包中的实现,valueCtx部分实现了Context接口函数,对其不需要的函数没有实现,如果调用了这些未实现的函数就会导致panic。这样在程序排错其实是很有好处的,因为调用到这些接口,说明代码其实已经写错了。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。