package main import "fmt" // Person // 嵌套结构体 type Person struct { Name string Age int Address Address } // Person2 // 匿名 嵌套结构体 type Person2 struct { Name string Age int Address } type Company struct { Name string Address Address } type Address struct { Province string City string } func main() { p1 := &Person{ Name: "张三", Age: 20, Address: Address{ Province: "广东", City: "广州", }, } fmt.Printf("%#v\n", p1) fmt.Printf("%v %v\n", p1.Address.Province, p1.Address.City) fmt.Println("=========================================================") p2 := &Person2{ Name: "李四", Age: 20, Address: Address{ Province: "广东", City: "广州", }, } fmt.Printf("%#v\n", p2) fmt.Printf("%v %v\n", p2.Address.Province, p2.Address.City) // 匿名结构体 先在自己的 结构体中 寻找 字段 若 找不到 则 从 匿名嵌套结构体中 查找 // 如果 多个匿名嵌套结构体中 有字段冲突 则只能使用 类型名.字段名 访问 fmt.Printf("%v %v\n", p2.Province, p2.City) }