go-复合数据类型
- 复合数据类型,可以理解为是可以组合多个数据类型,不只是表示一个单一值,还可以一组数据、键值等等
go里常见的复合类型
array数组slice切片map映射struct结构体pointer指针function函数类型channel通道interface接口
map
- Go 里的
map可以理解成 Python 的dict、JavaScript 的普通对象 /Map:都是用 key 找 value。
map定义
- 通过var来声明map的变量
- 通过make方式来创建map
// 声明一个map,key和value类型都是string
var user map[string]string
user := map[string]string{
"name": "Tom",
"city": "Beijing",
}
user := make(map[string]string)
数组
- 定义数组语法:var 变量名 [长度]类型
- 通过大括号
{}来定义值的数据 - 通过
...可以自动计算数组长度,根据元素数量来推断长度 - 数组和切片很像,数组是有固定长度,而切片不需要写固定长度
// 定义长度为5的int数组
var nums [5]int
// 定义直接赋值
var nums = [5]int{1, 2, 3, 4, 5}
// 自动计算数组长度
var nums := [...]int{1, 2, 3, 4, 5}
切片slice
- 实际开发中,slice切片比数组使用得更多
// 数组:有固定长度
data := [5]int{1, 2, 3, 4, 5}
// slice:没有写固定长度
data := []int{1, 2, 3, 4, 5}
channel通道
- channel在Go并发编程里非常核心
- 用于goroutine之间通信