Go 确定结构是否嵌入另一个结构?

Go 确定结构是否嵌入另一个结构?,go,struct,composition,Go,Struct,Composition,我试图找出如何确定给定的接口{}是将给定结构嵌入为匿名字段的结构,还是给定结构本身的实例 例如,如果我有一个structa,structB嵌入structa,但structC没有: 结构A应有效 结构B应有效 结构C不应有效 我已经创建了一个游乐场,我希望它能说明我正在努力实现的目标 我尝试了以下方法,但是a,embedsA:=v.(struct{a})部分似乎没有达到我想要的效果 a,embedsA:=v.(结构{a}) 如果嵌入a{ fmt.Printf(“嵌入:%v\n”,a.a.F

我试图找出如何确定给定的
接口{}
是将给定结构嵌入为匿名字段的结构,还是给定结构本身的实例

例如,如果我有一个struct
a
,struct
B
嵌入struct
a
,但struct
C
没有:

  • 结构
    A
    应有效
  • 结构
    B
    应有效
  • 结构
    C
    不应有效
我已经创建了一个游乐场,我希望它能说明我正在努力实现的目标

我尝试了以下方法,但是
a,embedsA:=v.(struct{a})
部分似乎没有达到我想要的效果

a,embedsA:=v.(结构{a})
如果嵌入a{
fmt.Printf(“嵌入:%v\n”,a.a.Foo)
}否则{
a、 isA:=v.(a)
如果isA{
fmt.Printf(“实例:%v\n”,a.Foo)
}否则{
fmt.Printf(“%v未嵌入\n”,v)
}
}

编辑:我假设我可以通过反射来完成这项工作,但我更好奇的是,我是否可以在没有反射的情况下完成这项工作。

解决这个问题需要反射。类型断言不能用于获取嵌入类型的值。@i过度引用您的名字让我觉得您是被雇来这么说的。您想知道一个结构是否嵌入了另一个类型而不是仅仅实现了一个接口吗?解决这个问题需要反射。类型断言不能用于获取嵌入类型的值。@I过度引用您的名字让我觉得您是被雇来这么说的。您想知道一个结构是嵌入另一个类型还是只实现一个接口,有什么具体原因吗?