package main
import (
"fmt"
)
type A struct {
Name string
}
type B struct {
A
Name string
}
func (a *A) SayOK() {
fmt.Println("a sayok....", a.Name)
}
func main() {
var b B
var a A
b.A.Name = "AA"
fmt.Println("b.name=", b.Name)
fmt.Println("a.name=", a.Name)
b.SayOK()
}
//b.A.Name = "AA" 这里我有赋值操作,为什么b.Name和a.Name打印结果都是空呢?结构体B不是可以访问A的字段name吗?b.sayok这个方法为什么可以获取到a.Name的值呢?
有疑问加站长微信联系(非本文作者)

谢谢各位大佬,麻烦帮忙解答下
b.Name 覆盖了b.A.Name, 要么删掉b.Name,要么改不同名字,要么用b.A.Name访问
b.A.name="AA", 不就相当于给结构体A的name赋值了吗? 为什么a.name打印为空呢
a是a,b是b,是两个不同的实例, 如果var b B; a := &b.A ; 这样才能实现你的意图
fmt.Println("b.name=", b.A.Name)
你这样写a和b.A除了类型一样,有什么关联吗?就好比你家里有条狗加阿黄,然后路上来了一条流浪狗,我问你这条流浪狗叫什么?