例如,在将父结构嵌入子结构之后:
是否会打印出"节点"并返回包含所有信息的包裹在父结构中的子结构,以便我们可以在拥有实际子结构的同时操纵表面上的父结构? 这个想法类似于Java,在Java中,您可以返回表观类型的List,但可以返回实际类型的LinkedList。
如果没有,实现此功能的最佳方法是什么? 本质上,我想将Child结构转换为父结构,但要像对待子结构一样对其进行操作。 有没有一种使用界面解决此问题的方法?
如何消除
它不会返回子结构。 您正在执行的操作不是强制转换子结构,而是返回其字段之一。 使用一个更具体的示例,上面的go片段类似于尝试使用Employee的名称,就好像它是Employee的超类一样。
但是,您的猜测是正确的,实现ArrayList和List之类的" is-a"关系的方法是使用接口。 但是请知道,接口只能为方法调用提供多态性,而不能为字段访问提供多态性。 可以在以下位置找到示例的修改版本,希望会对您有所帮助:
http://play.golang.org/p/qclS5KR64H
您可能会发现阅读go规范的" Struct Types"部分和/或整个规范很有帮助(时间不长!或令人恐惧!):
https://golang.org/ref/spec#Struct_types