扩容过程中需不需要重新写入

本文阅读 1 分钟
首页 golang 正文

题目来源:腾讯

作者:斯鱼

切片的扩容,
当在尾部扩容时,追加元素,不需要重新写入;

var a []int
a = append(a, 1)

在头部插入时;会引起内存的重分配,导致已有的元素全部重新写入;

a = append([]int{0}, a...);

在中间插入时,会局部重新写入,如下:
使用链式操作在插入元素,在内层append函数中会创建一个临式切片,然后将a[i:]内容复制到新创建的临式切片中,再将临式切片追加至a[:i]中。

a = append(a[:i], append([]int, a[i:]...)...) 
a = append(a[:i], append([]int{1, 2, 3}, a[i:]...)...)//在第i个位置上插入切片
本文来自投稿,不代表本站立场,如若转载,请注明出处:
如何限制 goroutine 并发数量 (channel 或 WaitGroup)
« 上一篇 09-17
分片键的选择?
下一篇 » 09-17

发表评论

发表评论