diff --git a/base/struct/nested/main.go b/base/struct/nested/main.go new file mode 100644 index 0000000..43fc3a0 --- /dev/null +++ b/base/struct/nested/main.go @@ -0,0 +1,59 @@ +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) +}