## 一、定义
![](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)
}
~~~
- 一、数组
- 二、切片
- 三、copy
- 四、MAP
- 五、结构体
- 六、结构体参数
- 七、面向”对象“
- 1、匿名字段
- 2、方法
- 3、包和封装
- 4、接口
- 5、异常处理
- 八、Json
- 九、文件操作
- 1、写文件
- 2、读取文件内容
- 3、拷贝文件
- 十、反射
- 1、查看类型,字段和方法
- 2、查看匿名字段
- 3、修改基本类型的值
- 4、修改结构体的值
- 5、调用方法
- 十一、并发编程
- 1、并行和并发
- 2、协程
- 3、runtime包
- 5、channel的使用
- 6、close
- 7、定时器
- 8、select
- 9、协程同步锁
- 十二、socket编程
- 十三、Http编程
- 十四、并发爬虫和数据处理
- 1、简易爬虫实例
- 2、并发爬取图片
- 3、读文件中的数据
- 4、数据清洗
- 其他
- 1、推荐文章