为了账号安全,请及时绑定邮箱和手机立即绑定

为什么在结构中使用匿名字段会使类型在没有写入方法时满足接口?

为什么在结构中使用匿名字段会使类型在没有写入方法时满足接口?

Go
Cats萌萌 2022-09-19 15:04:19
要使类型满足接口,该类型需要实现接口中定义的方法。但是,在下面的代码片段中,没有编写任何方法,但通过使用作为匿名字段,它满足 。myStructsomeInterfacesomeInterface有人可以帮忙解释为什么吗?谢谢。package mainimport "fmt"type someInterface interface {    method1(int) string    method2(string) string}type myStruct struct {    someInterface    body int}func main() {    var foo someInterface    bar := myStruct{}    foo = bar // why no compile error??    fmt.Println(foo)}
查看完整描述

1 回答

?
holdtom

TA贡献1805条经验 获得超10个赞

myStruct嵌入 ,因此它具有在该接口中定义的所有方法。这也意味着,有一个名为 的字段,该字段未初始化,因此调用将崩溃。在使用它之前,您必须对其进行初始化。someInterfacemyStructsomeInterfacebar.method1


bar:=myStruct{}

bar.someInterface=someInterfaceImpl{}

bar.method1(0)

bar.method2("")



查看完整回答
反对 回复 2022-09-19
  • 1 回答
  • 0 关注
  • 54 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信