package main
import"fmt"type X struct{
a int}type Y struct{
X
b int}type Z struct{
Y
c int}funcmain(){
x := X{a:1}
y := Y{
X:x,
b:2,}
z := Z{
Y:y,
c :3,}
fmt.Println(z.a,z.Y.a,z.Y.X.a)//输出:1 1 1
z = Z{}
z.a =2
fmt.Println(z.a,z.Y.a,z.Y.X.a)//输出:2 2 2 }
package main
import"fmt"type X struct{
a int}type Y struct{
X
b int}type Z struct{
Y
c int}func(x X)print(){
fmt.Printf("In X,a=%d\n",x.a)}func(x X)Xprint(){
fmt.Printf("In X,a=%d\n",x.a)}func(y Y)Xprint(){
fmt.Printf("In Y,a=%d\n",y.b)}func(z Z)print(){
fmt.Printf("In Z,c=%d\n",z.c)//显式的完全路径调用内嵌字段的方法
z.Y.print()
z.Y.X.print()}funcmain(){
x := X{a:1}
y := Y{
X:x,
b:2,}
z := Z{
Y:y,
c :3,}//从外向内查找,首先找到的z的print()方法
z.print()//从外向内查找,最后找到的是X的Xprint()方法
z.Xprint()
z.Y.Xprint()}
输出:
In Z,c=3
In X,a=1
In X,a=1
In Y,a=2
In Y,a=2