要使类型满足接口,该类型需要实现接口中定义的方法。但是,在下面的代码片段中,没有编写任何方法,但通过使用作为匿名字段,它满足 。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("")
- 1 回答
- 0 关注
- 54 浏览
添加回答
举报
0/150
提交
取消