跳到主要内容

go-复合数据类型

  • 复合数据类型,可以理解为是可以组合多个数据类型,不只是表示一个单一值,还可以一组数据、键值等等

go里常见的复合类型​

  • array 数组
  • slice 切片
  • map 映射
  • struct 结构体
  • pointer 指针
  • function 函数类型
  • channel 通道
  • interface 接口

map​

  • Go 里的 map 可以理解成 Python 的 dict、JavaScript 的普通对象 / Map:都是用 key 找 value。

map定义​

  • 通过var来声明map的变量
  • 通过make方式来创建map
go
// 声明一个map,key和value类型都是string
var user map[string]string

user := map[string]string{
"name": "Tom",
"city": "Beijing",
}

user := make(map[string]string)

数组​

  • 定义数组语法:var 变量名 [长度]类型
  • 通过大括号{} 来定义值的数据
  • 通过... 可以自动计算数组长度,根据元素数量来推断长度
  • 数组和切片很像,数组是有固定长度,而切片不需要写固定长度
go
// 定义长度为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切片比数组使用得更多
go
// 数组:有固定长度
data := [5]int{1, 2, 3, 4, 5}

// slice:没有写固定长度
data := []int{1, 2, 3, 4, 5}

channel通道​

  • channel在Go并发编程里非常核心
  • 用于goroutine之间通信