首页 > 其他分享 >go slice的拷贝问题

go slice的拷贝问题

时间:2022-09-02 16:12:49浏览次数:80  
标签:导致 slice 复制 go 拷贝 copy

首先是深拷贝与浅拷贝的特点

  1. 浅拷贝实际是拷贝的地址,两个变量将会指向同一个空间,导致修改其中一方另一方也会跟着改变
  2. 深拷贝则拷贝所有的数据内容在一个新的空间内,这样两个就形成隔离,可以独立的操作而相互之间不发生影响

go中值类型都是深拷贝,而引用类型都是浅拷贝

常用的slice就有此问题
slice属于引用类型
对其用=进行复制就是浅拷贝

a:=make([]int,3)
b:=a
//此时的b就a 的浅拷贝,对b进行操作会导致a的改变

//如果a在扩容的时候,可能到导致数据的迁移,那样会导致a的地址变化,而b
//在原处,a,b之间分离

如果想要实现slice的深拷贝可以使用for循环进行复制
还可以是使用copy()

!!!但是 copy()有一个小问题
copy(a,b)会取其中容量小的为基础进行复制
如果想构造一个新的slice b其与a相同,此时copy(a,b)是不行的,因为b此时为零值,这个copy过程什么效果也没有

标签:导致,slice,复制,go,拷贝,copy
From: https://www.cnblogs.com/beifangcc/p/16650278.html

相关文章

  • MongoDB安装问题一
    1.ubuntu18.04/16.04安装版本mongodb-linux-x86_64-2.6.10,启动正常,但是Compass链接报错Serverat10.15.7.72:27017reportsmaximumwireversion2,butthisversion......
  • golang面试题
    面试题1:2.代码效率分析,考察局部性原理3.多核CPU场景下,cache如何保持一致、不冲突?4.uint类型溢出5.介绍rune类型6.编程题:3个函数分别打印cat、dog、fish,要求每个函数......
  • go中的 位预算,反码、补码、原码
    https://baike.baidu.com/item/%E4%BD%8D%E8%BF%90%E7%AE%97/6888804首先关于“位运算”,看下百度百科就行了。 总结:在go语言中,^这个符号具有取反的意思,举例:^x的意思......
  • Mongodb数据库无故消失?
    一开始还以为是mongodb版本不支持持久化,直到我打开数据库连接,真的给我整笑了,我居然被黑了 内容是:Allyourdataisabackedup.Youmustpay0.01BTCtobc1q2......
  • Golang 动态脚本调研
    一、技术背景1.1程序的动态链接技术在实际开发过程中,我们经常需要动态地更新程序的功能,或者在不变更程序主体文件的情况下添加或者更新程序模块。1.1.1动态链接库首......
  • Singpass App Google Play 商店情绪分析(第 1 部分)
    SingpassAppGooglePlay商店情绪分析(第1部分)我爱新通!(我不是这么说,因为我的工作是推动SingpassAPI的采用,哈哈,或者好吧,部分原因是)自从担任这个角色以来,我学会了更......
  • 构建计算机视觉 WebApp — Flask、OpenCV 和 MongoDB
    构建计算机视觉WebApp—Flask、OpenCV和MongoDB作为一名数据科学家,具备一些软件工程技能已成为就业市场中一项非常重要的技能。如果您可以构建模型,我建议您提高简单......
  • Django初学者介绍和安装
    Django初学者介绍和安装吨他的文章主要关注Django的安装以及如何进行Django开发环境的初始设置。我们还将讨论Django及其特性。在本教程结束时,您将知道如何:如......
  • AviX Ergo 改善工作条件的视觉人体工程学
    随着装配线的要求越来越复杂,人体工程学正成为关注的焦点。AviXErgo通过视频评估带来了一种全新的方法来改善工作场所的人体工程学。AviXErgo将AviX方法对工作场所的......
  • opensergo 阿里开源的语言无关的云原生服务治理指南
    opensergo是阿里巴巴开源提供的语言无关的云原生服务治理指南,包含了不少子项目(指南,golang,java,协议)概览  说明opensergo还是很完备的,很值得学习参考,后续仔细研究......