多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
## 一、定义 ![](https://img.kancloud.cn/65/df/65df878d863649a739b90bdc94c04d76_546x113.png) ## 二、匿名字段实例 ~~~ package main import "fmt" // 结构体 type User struct { Id int Name string Age int } type Article struct { // 匿名字段 //这里的User会把我们定义的User结构体放到这里(Article) User title string desc string } func main() { // 顺序初始化 s1 :=Article{User{1,"aaa",20},"111","aaaa"} fmt.Println(s1) // 部分初始化 s2 :=Article{User:User{Id: 1},title: "111",desc: "aaaa"} fmt.Println(s2) } ~~~ ## 二、匿名字段同名字段 ~~~ package main import "fmt" // 结构体 type User struct { Id int Name string Age int } type Article struct { // 匿名字段 //这里的User会把我们定义的User结构体放到这里(Article) User title string desc string Name string } func main() { var a Article a.Name = "a1" fmt.Println(a) //默认是就近原则赋值 //如需要赋值上一层,需要显式调用 a.User.Name = "a2" fmt.Println(a) } ~~~ 结果: {{0 0} a1} {{0 a2 0} a1} ## 三、所有的内置类型和自定义类型都是可以作为匿名字段来使用 ~~~ package main import "fmt" // 结构体 type User struct { Id int Name string Age int } type mystrs string type Article struct { // 匿名字段 //这里的User会把我们定义的User结构体放到这里(Article) User int mystrs } func main() { s1 := Article{User{1,"22",22},2,"220"} fmt.Println(s1) } ~~~ ## 五、指针类型匿名字段 ~~~ package main import "fmt" // 结构体 type User struct { Id int Name string Age int } type mystrs string type Article struct { // 匿名字段 //这里的User会把我们定义的User结构体放到这里(Article) *User int mystrs } func main() { s1 := Article{&User{1,"22",22},2,"220"} fmt.Println(s1) } ~~~