结论:copy复制会比等号复制慢。但是copy复制为值复制,改变原切片的值不会影响新切片。而等号复制为指针复制,改变原切片或新切片都会对另一个产生影响。

测试复制速度:

func TestArr1(t *testing.T) {var a []intfor i := 0; i < 100000000; i++ {a = append(a, i)}start := time.Now().UnixNano()var b = make([]int, 1000000)copy(b, a)end := time.Now().UnixNano()fmt.Println(end - start)
}

结果为 5001100

func TestArr2(t *testing.T) {var a []intfor i := 0; i < 100000000; i++ {a = append(a, i)}start := time.Now().UnixNano()var b = a[0:1000000]end := time.Now().UnixNano()fmt.Println(end - start)_ = b
}

结果为0
结论:等号复制要比copy赋值速度快

测试更改原切片是否影响新切片:

func TestArr1(t *testing.T) {var a []intfor i := 0; i < 100; i++ {a = append(a, i)}var b = make([]int, 10)copy(b, a)a[0] = 999fmt.Println(b[0])
}

结果0

func TestArr2(t *testing.T) {var a []intfor i := 0; i < 100; i++ {a = append(a, i)}var b = a[0:10]a[0] = 999fmt.Println(b[0])
}

结果 999
结论:copy为值复制,更改原切片不会影响新切片,而等号复制相反

golang 切片copy复制 和 等号复制 区别相关推荐

  1. 深度复制_Python 列表切片陷阱:引用、复制与深复制

    Python 列表的切片和赋值操作很基础,之前也遇到过一些坑,以为自己很懂了.但今天刷 Codewars 时发现了一个更大的坑,故在此记录. Python 列表赋值:复制"值"还是 ...

  2. C++ Copy Constructor (拷贝构造函数,复制构造函数)

    1.什么是Copy Constructor? Copy Constructor 是一个特殊的构造函数,一般只有一个参数,这个参数一般是用const修饰的,对自己类的一个引用(reference).什么 ...

  3. copy.deepcopy()函数深复制

    copy.deepcopy()函数是一个深复制函数. 所谓深复制,就是从输入变量完全复刻一个相同的变量,无论怎么改变新变量,原有变量的值都不会受到影响. 与等号赋值不同,等号复制类似于贴标签,两者实质 ...

  4. SV学习笔记—浅复制和深复制的区别详解

    目录 1.句柄的复制 2.对象的复制 2.1浅复制shallow copy 2.2深复制deep copy 3.this的用法 在类中,复制一半会涉及到句柄的复制,浅复制和深复制3种操作,下面来看看这 ...

  5. Golang 元素值在经过通道传递时会被复制,这个复制是浅复制

    1. channel 元素值为切片 package mainimport ("fmt" )func main() {ch := make(chan []int, 3)s := [] ...

  6. 快照复制,事务复制,合并复制的区别

    简单来说: 1.快照复制和事务复制是单向的(2005及以后的版本中加入了订阅端可更新的事务复制). 2.合并复制是双向的. -------------------------------------- ...

  7. IOS学习笔记十八(copy、mutableCopy、NSCopying、NSMutableCopy、深复制、浅复制)

    1. copy.mutableCopy方法 copy方法返回对象的不可修改的副本 mutableCopy方法返回的对象可修改的副本 1).测试demo int main(int argc, char ...

  8. python中的copy模块(浅复制和深复制)

    在总结copy模块中的浅复制(copy)和深复制(deepcopy)前,先对"引用"做下说明: 引用是指保存的值为对象的地址.在 Python 语言中,一个变量保存的值除了基本类型 ...

  9. IDEA插件系列(89):Copy/Paste Stack插件——复制/粘贴工具栈

    1.插件介绍 Copy/Paste Stack插件. 复制/粘贴堆栈是一个高级复制历史管理器,包括剪贴板查看器.该插件添加了一个复制历史项目的工具窗口,类似于内置的标准复制历史,但可以保持持续打开并具 ...

最新文章

  1. JavaScript——this、constructor、prototype
  2. PKUWC2019游记WC2019游记
  3. 【科普】一文把数据科学、人工智能与机器学习讲清楚
  4. 超干货 | 在线教育增长实操者案例分享:如何玩转教育增长模型?
  5. ssh_askpass: exec(/usr/libexec/ssh-askpass): No such file or directory
  6. java的et5_Javascript与java相同的3des加密(使用etdesede/CBC/PKCS5Padding )
  7. 晶振两端的谐振电容有特殊要求吗_干货 | 晶振电路设计诀窍
  8. Linux 开机启动
  9. [转]把复杂事物简明化
  10. 蓝桥杯 ADV-179 算法提高 解二元一次方程组
  11. 局域网共享设置——权限问题
  12. Java从入门到精通 第0章Java学习指南
  13. 全国各省五等份收入统计(2000-2017年)
  14. [解读] GuiltyGearXrd‘s Art Style : The X Factor Between 2D and 3D - GGX 3D 渲染 2D 风格
  15. C++ google code style.
  16. 心知天气html,esp8266初级入门实用教程一之访问心知天气读取实时天气数据
  17. AAAI2021论文: 时空Kriging的归纳式图神经网络
  18. 服务器怎么用固态盘安装系统,服务器使用固态盘安装
  19. 【知识产权之专利权】论述题题库
  20. VS中C++解决方案中多个项目文件的引用

热门文章

  1. 标题: Debian 下 VirtualBox 的桥接、USB 设置 ── 迷你怎么做 [转自sir]
  2. 视频可以转换html,10 个免费的 HTML 视频转换工具
  3. Tungsten Fabric SDN — Device Manager
  4. IPv6 — Multi-homing(多宿主/多链路/多归属)
  5. MySQL — 索引的慢查询优化与 B+ 树
  6. NanoPi NEO Air使用四:操作GPIO
  7. J-Flash的使用
  8. 第 15 章 Framework Design
  9. 用haproxy结合keepalived实现基于LNMP的负载均衡和高可用
  10. 高通转战服务器 能否撼动英特尔统治地位