登录
首页 >  Golang >  Go问答

简明扼要地深拷贝一个切片?

来源:Golang技术栈

时间:2023-04-19 17:00:25 319浏览 收藏

目前golang学习网上已经有很多关于Golang的文章了,自己在初次阅读这些文章中,也见识到了很多学习思路;那么本文《简明扼要地深拷贝一个切片?》,也希望能帮助到大家,如果阅读完后真的对你学习Golang有帮助,欢迎动动手指,评论留言并分享~

问题内容

在 Go 中,深度复制切片的简洁/性能良好的方法是什么?我需要将切片复制到一个新的支持数组,因为另一个数组归其他人所有,并且可以在复制后进行修改。

我目前正在这样做:

copy := append([]T{}, orig...)

其中T是 的元素类型orig

正确答案

似乎最快的方法是附加到具有必要空间的切片。我已经用基准测试结果扩展了@Anisus 答案,并得到了最快的解决方案。

BenchmarkCopy            100000 18240 ns/op
BenchmarkAppend          100000 18276 ns/op
BenchmarkAppendPreCapped 100000 16407 ns/op

BenchmarkAppendPreCapped 可能会避免切片的归零和/或增长。它看起来像这样:

copy := append(make([]T, 0, len(orig)), orig...)

本篇关于《简明扼要地深拷贝一个切片?》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于Golang的相关知识,请关注golang学习网公众号!

声明:本文转载于:Golang技术栈 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>