Golang 学习 - 切片

为什么使用切片?

  • 数组的容量固定,不能自动拓展。
  • 值传递。因为数组作为函数参数时,将整个数组值拷贝一份给形参,内存消耗大,效率低。
  • 在 Go语言中,我们几乎可以在所有场景中,使用切片替换数组来使用。

切片的本质: 不是一个数组的指针,而是一种数据结构体,用来操作数组内部元素。

切片的使用:

  • 切片与数组定义区别:
    – 创建数组时,[2] 指定数组长度。
    – 创建切片时,[] 为空,或者 […]

  • 定义,切片名称 [ low : high : max ]
    – low:起始下标位置。
    – high:结束下标位置。
    – max:切片的最大容量。
    – 长度 len = high - low
    – 容量 cap = max - low

  • 截取数组,初始化切片时,如没有指定切片最大容量时,则切片容量跟随原数组(切片)。
    – s[:high:max] :从 0 开始,到 high 结束(不包含)。
    – s[low:] :从 low 开始,到末尾。
    – s[:high] :从 0 开始,到 high 结束。容量跟随原先容量。【常用】

  • 切片创建
    – 自动推导类型创建切片: slice := []int{1,2,3,4}
    – slice := make([]int, 长度, 容量)
    – slice := make([]int, 长度) ,没有指定容量,容量 = 长度。【常用】

  • 切片做函数参数
    – 传引用(地址)。

  • append 函数
    – append(切片对象, 待追加元素)
    – 向切片增加元素时,切片的容量会自动增长。1024 以下时,以两倍方式增长。

  • copy 函数
    – copy(目标位置切片, 源切片)
    – 拷贝过程中,直接对应位置拷贝。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值