docs: 嵌套结构体、匿名嵌套结构体

This commit is contained in:
Shikong 2021-10-03 02:11:04 +08:00
parent 2444f78870
commit c96b7cebe0

View File

@ -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)
}