struct A {}
func (a *A) BName(id int) string {
return a.Name
}
struct B {
*A
Name string
}
func main() {
b := &B{Name: "abc"}
fmt.Println(b.Name)
}
Run Code Online (Sandbox Code Playgroud)
代码失败,我想知道如何编写代码来实现,A.BName可以访问B struct属性Name
这是不可能的.struct A对嵌入的类型一无所知.想想看,A可以嵌入到任何其他结构中,所以你怎么能提前知道嵌入A的结构的类型.
如果你想这样做,你需要将B的引用,外部结构放入A.
type A struct {
*B
}
func (a *A) PrintName() string { return a.B.Name }
type B struct {
A // no need to use a pointer here
Name string
}
var b B
b.A.B = &b
fmt.Println(b.PrintName())
Run Code Online (Sandbox Code Playgroud)