go语言--Array,Slice,Map

数组:

定义:golang中的数组和C语言中的数组是相似的,在 Go 语言中数组是固定长度的数据类型,它包含相同类型的连续的元素,这些元素可以是内建类型,像数字和字符串,也可以是结构类型,元素可以通过唯一的索引值访问,从 0 开始。
数组是很有价值的数据结构,因为它的内存分配是连续的,内存连续意味着可是让它在 CPU 缓存中待更久,所以迭代数组和移动元素都会非常迅速。

使用方式:
1. 基本定义:
go语言--Array,Slice,Map

2. 快速定义
go语言--Array,Slice,Map

3. 直接复制一整个数组
go语言--Array,Slice,Map

4. 函数中使用数组一般是使用指针,不然的话类似一个100万的数组,每次使用都要调用8M的内存
go语言--Array,Slice,Map

SLICE:

定义:slice 是一种可以动态数组,可以按我们的希望增长和收缩。它的增长操作很容易使用,因为有内建的 append 方法。我们也可以通过 relice 操作化简 slice。因为 slice 的底层内存是连续分配的,所以 slice 的索引,迭代和垃圾回收性能都很好。

slice 是对底层数组的抽象和控制。它包含 Go 需要对底层数组管理的三种元数据,分别是:

  1. 指向底层数组的指针
  2. slice 中元素的长度
  3. slice 的容量(可供增长的最大值)

切片长度和容量的区别

  1. 切片拥有长度和容量。
  2. 切片的长度是它所包含的元素个数。
  3. 切片的容量是从它的第一个元素开始数,到其底层数组元素末尾的个数。
  4. 切片 s 的长度和容量可通过表达式 len(s) 和 cap(s) 来获取。
  5. 大概能理解容量和长度的大概意思是,

初始化方式:

  1. 默认定义方式,如果只指定了长度,那么容量默认等于长度。
    go语言--Array,Slice,Map

  2. 定义长度和容量
    go语言--Array,Slice,Map

  3. 正常slice,使用apend函数,容量足够的话,那么就会在原有的内存上增加,但是如果容量不足的,就会从新分配一个新的地址空间
    go语言--Array,Slice,Map

map结构:

定义:简单的说就是一个类似php的字典,每个key对应一个value,他的特定是他是无序的,不会按照你的存入顺序而排序,它也可以迭代。

定义方式:

  1. make方法定义和其他使用:=方法一样直接定义
    go语言--Array,Slice,Map
    go语言--Array,Slice,Map