结构体允许其成员字段在声明时没有字段名而只有类型,这种没有名字的字段就称为匿名字段。
package mainimport "fmt"type Person struct {Name stringAge intint // 匿名字段,等同于 int int}func main() {p := Person{Name: "sgg", Age: 22}fmt.Println(p.int) // 调用匿名变量,调用类型}
结构体也可以作为匿名字段使用
package mainimport "fmt"type Addr struct {country stringprovince stringcity string}type Person struct {Name stringAge intAddr // 匿名变量}func main() {p1 := Person{Name: "sgg",Age: 22,Addr: Addr{"China", "shanghai", "yangpu"},}fmt.Println(p1.Addr.province) // shanghai// 如果 Person 里面有province属性则取 Person中的,没有则取Addr中的fmt.Println(p1.province) // shanghai,所以 等同于 p1.Addr.province}
当结构体中有和匿名字段相同的字段时,采用外层优先访问原则
