go语言通道插入0_Go语言切片操作技巧 - 快速插入

cbd16c5449713df020a595f898368dff.png

切片作为常用的数据类型,插入元素的操作必不可少。那么今天就介绍几个关于切片插入元素的小技巧,这些技巧学会了,保证让你的程序飞起来!

1. 通过链式append 实现

将多个append操作组合起来,实现在切片中间插入元素:

var a []int
 // 在第i个位置插入1
a = append(a[:i], append([]int{1}, a[i:]...)...)    
a = append(a[:i], append([]int{1,2,3}, a[i:]...)...)

每个链式操作中的第二个append调用都会创建一个临时切片,并将a[i:]的内容复制到新创建的切片中,然后将临时创建的切片再追加到a[:i]

2. 通过copy + append 实现

通过 copyappend组合 可以避免创建中间的临时切片

a = append(a, 0)     // 切片扩展1个空间
copy(a[i+1:], a[i:]) // a[i:]向后移动1个位置
a[i] = x             // 设置新添加的元素

copyappend组合在中间位置插入多个元素(也就是插入一个切片):

a = append(a, x...)       // 为x切片扩展足够的空间
copy(a[i+len(x):], a[i:]) // a[i:]向后移动len(x)个位置
copy(a[i:], x)            // 复制新添加的切片

注:append本质是用于追加元素而不是扩展容量,扩展切片容量只是append的一个使用技巧。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值