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(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。