Data structures 理解go嵌套结构
我试图理解go中的嵌套结构,所以我做了一个小测试:() 那么,最后两行是如何工作的,以及为什么工作的?它们是一样的吗?我应该用哪一种?它们是一样的。见: 对于类型为Data structures 理解go嵌套结构,data-structures,go,Data Structures,Go,我试图理解go中的嵌套结构,所以我做了一个小测试:() 那么,最后两行是如何工作的,以及为什么工作的?它们是一样的吗?我应该用哪一种?它们是一样的。见: 对于类型为T或*T的值x,其中T不是指针或接口类型,x.f表示T中最浅深度的字段或方法,其中存在这样的f。如果没有一个深度最浅的f,则选择器表达式是非法的 请注意,这意味着如果类型b在同一深度上嵌入两个具有相同字段的类型,则b.a是非法的: type A1 struct{ a string } type A2 struct{ a string
T
或*T
的值x
,其中T
不是指针或接口类型,x.f
表示T
中最浅深度的字段或方法,其中存在这样的f
。如果没有一个深度最浅的f
,则选择器表达式是非法的
请注意,这意味着如果类型b
在同一深度上嵌入两个具有相同字段的类型,则b.a
是非法的:
type A1 struct{ a string }
type A2 struct{ a string }
type B struct {
A1
A2
}
// ...
b := B{A1{"a1"}, A2{"a2"}}
fmt.Println(b.a) // Error: ambiguous selector b.a
操场:
type A1 struct{ a string }
type A2 struct{ a string }
type B struct {
A1
A2
}
// ...
b := B{A1{"a1"}, A2{"a2"}}
fmt.Println(b.a) // Error: ambiguous selector b.a