若 a 是嵌套在 b 里面的匿名结构体,则有如下的三个规则
(0) 调用的时候我们可以 b.a.XXX 也可以直接 b.XXX
(1) 当我们直接通过 b 访问字段或方法时,其执行流程如下比如 b.Name
(2) 编译器会先看 b 对应的类型有没有 Name, 如果有,则直接调用 B 类型的 Name 字段
(3) 如果没有就去看 B 中嵌入的匿名结构体 A 有没有声明 Name 字段,如果有就调用,如果没有
继续查找..如果都找不到就报错.
有名结构体(组合关系)
type Person struct {
name string`json:"name"`
age int8`json:"age"`
}
type Student struct {
p Person // 这里就是有名结构体,我们在访问有名结构体的属性或者方法的时候必须指定有名结构体是哪个
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步