当前位置: 首页 > news >正文

go深拷贝和浅拷贝

1、深拷贝(Deep Copy)

拷贝的是数据本身,创造一个样的新对象,新创建的对象与原对象不共享内存,新创建的对象在内存中开辟一个新的内存地址,新对象值修改时不会影响原对象值。既然内存地址不同,释放内存地址时,可分别释放。

值类型的数据,默认全部都是深复制,Array、Int、String、Struct、Float,Bool。

2、浅拷贝(Shallow Copy)

拷贝的是数据地址,只复制指向的对象的指针,此时新对象和老对象指向的内存地址是一样的,新对象值修改时老对象也会变化。释放内存地址时,同时释放内存地址。

引用类型的数据,默认全部都是浅复制,Slice,Map

用途

当我们需要拷贝一个新对象时, 怎么选择呢? 显然

当需要节省内存时, 可选浅拷贝, 因为只是复制了地址

当为了操作简便时, 可选浅拷贝, 直接a := b即可

而当需要开辟新内存, 分别处理新老对象, 使两者互不干扰时, 则需要深拷贝

例如数据流业务的多条支流间, 若均存在改写对象的操作, 则需深拷贝, 防止A逻辑分支改了a对象, 而后续B逻辑分支意外的使用了被别人改过的对象

是否真正获取(复制)对象实体,而不是引用

关于copy函数:

1.copy只能用于切片,不能用于 map 等任何其他类型。

2.copy返回结果为一个 int 型值,表示 copy 从原切片src复制到目的切片的长度。

使用注意事项:

切片 dst 需要先初始化长度

在使用copy将 src 完全 复制 到 dst 时,需要初始化目的切片dst的长度。

1.如果 dst 长度小于 src 的长度,则 拷贝src中的部分内容;
2.如果大于,则全部拷贝过来,其余的空间填充该类型的默认值;
3.如果相等,刚好不多不少 copy 过来,所以,通常dst在初始化时即指定其为src的长度。

源切片中元素类型为引用类型时,拷贝的是引用

由于copy 函数,拷贝的是切片中的元素,所以如果切片元素的类型是引用类型,那么 copy 的也将是个引用

1.性能方面:copy复制会比等号复制慢。 2.复制方式:copy复制为值复制,改变原切片的值不会影响新切片。而等号复制为指针复制,改变原切片或新切片都会对另一个产生影响

相关文章:

go深拷贝和浅拷贝

1、深拷贝(Deep Copy)拷贝的是数据本身,创造一个样的新对象,新创建的对象与原对象不共享内存,新创建的对象在内存中开辟一个新的内存地址,新对象值修改时不会影响原对象值。既然内存地址不同,释…...

linux网络系统层面的配置、管理及操作命令汇总

前几篇文章一一介绍了LINUX进程管理控制命令,关于linux系统中的软件包管理内容等,作为一名运维工程师,前两天刚处理了一起linux网络层面的情况,那么今天这篇文章就以linux网络层面为主题吧。当说到linux网络系统层面,e…...

R数据分析:孟德尔随机化中介的原理和实操

中介本身就是回归,基本上我看到的很多的调查性研究中在中介分析的方法部分都不会去提混杂,都是默认一个三角形画好,中介关系就算过去了,这里面默认的逻辑就是前两步回归中的混杂是一样的,计算中介效应的时候就自动消掉…...

【C++】 类和对象 (下)

文章目录📕再谈构造函数1. 构造函数体赋值2. 初始化列表3. explicit 关键字📕static 成员1. 概念2. static 成员变量3. static 成员函数📕 友元1. 友元函数2. 友元类📕内部类📕编译器优化📕再谈构造函数 1…...

asp获取毫秒时间戳的方法 asp获取13位时间戳的方案

一、背景。时间戳就是计算当前与"1970-01-01 08:00:00"的时间差,在asp中通常是使用Datediff函数来计算两个日期差,代码:timestamp Datediff("s", "1970-01-01 08:00:00",now)返回结果:1675951060可…...

Python基础篇(十五)-- Python程序接入MySQL数据库

程序运行时,数据都在内存中,程序终止时,需要将数据保存到磁盘上。为了便于程序保存和读取,并能直接通过条件快速查询到指定数据,数据库(Database)应运而生,本篇主要学习使用Python操作数据库,在…...

程序员不得不知道的 API 接口常识

说实话,我非常希望自己能早点看到本篇文章,大学那个时候懵懵懂懂,跟着网上的免费教程做了一个购物商城就屁颠屁颠往简历上写。 至今我仍清晰地记得,那个电商教程是怎么定义接口的: 管它是增加、修改、删除、带参查询…...

【项目精选】基于Java的银行排号系统的设计与实现

银行排号系统是为解决一些服务业营业大厅排队问题而设计的,它能够有效地提高工作人员的工作效率,也能够使顾客合理的安排等待时间,让顾客感到服务的公平公正。论文首先讨论了排号系统的背景、意义、应用现状以及研究与开发现状。本文在对C/S架…...

前端 基于 vue-simple-uploader 实现大文件断点续传和分片上传

文章目录一、前言二、后端部分新建Maven 项目后端pom.xml配置文件 application.ymlHttpStatus.javaAjaxResult.javaCommonConstant.javaWebConfig.javaCheckChunkVO.javaBackChunk.javaBackFileList.javaBackChunkMapper.javaBackFileListMapper.javaBackFileListMapper.xmlBac…...

解决报错: ERR! code 128npm ERR! An unknown git error occurred

在github下载的项目运行时,进行npm install安装依赖时,出现如下错误:npm ERR! code 128npm ERR! An unknown git error occurrednpm ERR! command git --no-replace-objects ls-remote ssh://gitgithub.com/nhn/raphael.gitnpm ERR! gitgithu…...

聊城高新技术企业认定7项需要注意的问题 山东同邦科技分享

聊城高新技术企业认定7项需要注意的问题 山东同邦科技分享 山东省高新技术企业认定办公室发布《关于开展2021年度本市高新技术企业认定管理工作的通知》,高企认定中有哪些问题需要注意呢?下面我们一起来看一下。 一、知识产权 知识产权数量和质量双达…...

菊乐食品更新IPO招股书:收入依赖单一地区,规模不及认养一头牛

近日,四川菊乐食品股份有限公司(下称“菊乐食品”)预披露更新招股书,准备在深圳证券交易所主板上市,保荐机构为中信建投证券。据贝多财经了解,这已经是菊乐食品第四次冲刺A股上市,此前三次均未能…...

Elasticsearch安装IK分词器、配置自定义分词词库

一、分词简介 在Elasticsearch中,假设搜索条件是“华为手机平板电脑”,要求是只要满足了其中任意一个词语组合的数据都要查询出来。借助 Elasticseach 的文本分析功能可以轻松将搜索条件进行分词处理,再结合倒排索引实现快速检索。Elasticse…...

Linux嵌入式开发——shell脚本

文章目录Linux嵌入式开发——shell脚本一、shell脚本基本原则二、shell脚本语法2.1、编写shell脚本2.2、交互式shell脚本2.3、shell脚本的数值计算2.4、test命令&&运算符||运算符2.5、中括号[]判断符2.6、默认变量三、shell脚本条件判断if thenif then elsecase四、she…...

CV【5】:Layer normalization

系列文章目录 Normalization 系列方法(一):CV【4】:Batch normalization Normalization 系列方法(二):CV【5】:Layer normalization 文章目录系列文章目录前言2. Layer normalizati…...

跳跃游戏 II 解析

题目描述给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]。每个元素 nums[i] 表示从索引 i 向前跳转的最大长度。换句话说&#xff0c;如果你在 nums[i] 处&#xff0c;你可以跳转到任意 nums[i j] 处:0 < j < nums[i] i j < n返回到达 nums[n - 1] 的…...

易基因|猪肠道组织的表观基因组功能注释增强对复杂性状和人类疾病的生物学解释:Nature子刊

大家好&#xff0c;这里是专注表观组学十余年&#xff0c;领跑多组学科研服务的易基因。2021年10月6日&#xff0c;《Nat Commun》杂志发表了题为“Pig genome functional annotation enhances the biological interpretation of complex traits and human disease”的研究论文…...

01- NumPy 数据库 (机器学习)

numpy 数据库重点: numpy的主要数据格式: ndarray 列表转化为ndarray格式: np.array() np.save(x_arr, x) # 使用save可以存一个 ndarray np.savetxt(arr.csv, arr, delimiter ,) # 存储为 txt 文件 np.array([1, 2, 5, 8, 19], dtype float32) # 转换…...

RapperBot僵尸网络最新进化:删除恶意软件后仍能访问主机

自 2022 年 6 月中旬以来&#xff0c;研究人员一直在跟踪一个快速发展的 IoT 僵尸网络 RapperBot。该僵尸网络大量借鉴了 Mirai 的源代码&#xff0c;新的样本增加了持久化的功能&#xff0c;保证即使在设备重新启动或者删除恶意软件后&#xff0c;攻击者仍然可以通过 SSH 继续…...

拦截器interceptor总结

拦截器一. 概念拦截器和AOP的区别&#xff1a;拦截器和过滤器的区别&#xff1a;二. 入门案例2.1 定义拦截器bean2.2 定义配置类2.3 执行流程2.4 简化配置类到SpringMvcConfig中一. 概念 引入&#xff1a; 消息从浏览器发送到后端&#xff0c;请求会先到达Tocmat服务器&#x…...

ChatTTS 安装与部署实战:从零搭建到性能调优

最近在做一个语音合成的项目&#xff0c;选型时看中了 ChatTTS&#xff0c;它开源的特性、不错的音质和可控性很吸引人。但在实际动手安装和部署时&#xff0c;发现从个人电脑跑起来到服务器上稳定服务&#xff0c;中间有不少坑。今天就把我这一路从零搭建到性能调优的实战经验…...

MMC级联H桥仿真图解析:电压电流双闭环控制策略研究

MMC&#xff0c;级联H桥仿真图&#xff0c;电压电流双闭环。最近在搞MMC&#xff08;模块化多电平换流器&#xff09;的仿真&#xff0c;发现这玩意儿真是电力电子界的乐高——全靠子模块堆叠。特别是级联H桥的结构&#xff0c;玩电压合成比搭积木刺激多了。今天咱们就着电压电…...

Java大厂面试实战:电商高并发场景下的Spring Boot+Redis+Kafka技术栈深度解析

Java大厂面试实战&#xff1a;电商高并发场景下的技术栈深度解析 前言 在互联网大厂面试中&#xff0c;技术面试官往往会结合具体业务场景来考察候选人的技术深度和广度。本文模拟了一场电商场景下的Java技术面试&#xff0c;通过面试官与求职者"谢飞机"的三轮对话&a…...

NCMDump解密工具:3步解锁网易云音乐加密文件,实现跨平台自由播放

NCMDump解密工具&#xff1a;3步解锁网易云音乐加密文件&#xff0c;实现跨平台自由播放 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗&#xff1f;NCMDump是一款专…...

别再纠结了!Android音视频开发选软解(FFmpeg)还是硬解(MediaCodec)?一个实战Demo帮你做决定

Android音视频开发实战&#xff1a;软解与硬解的性能对决 在移动端音视频开发领域&#xff0c;选择软解还是硬解一直是个令人头疼的问题。每次技术选型会议上&#xff0c;总能看到两派开发者争得面红耳赤——软解支持者强调其灵活性和兼容性&#xff0c;硬解拥趸则推崇其性能和…...

Python办公自动化:用PyMuPDF+pdfplumber一键提取PDF文字/图片/表格(附完整代码)

Python办公自动化实战&#xff1a;PyMuPDF与pdfplumber高效提取PDF三要素 每天面对堆积如山的PDF文档&#xff0c;行政和财务人员最头疼的莫过于手动复制粘贴文字、截图保存图片、重新绘制表格。我曾见过一位财务同事为了处理200份供应商报价单&#xff0c;连续加班一周手工录入…...

Element React:革新性UI组件库助力React开发者高效构建企业级应用界面

Element React&#xff1a;革新性UI组件库助力React开发者高效构建企业级应用界面 【免费下载链接】element-react Element UI 项目地址: https://gitcode.com/gh_mirrors/el/element-react 在现代Web应用开发中&#xff0c;界面构建往往占据了开发者大量时间与精力。El…...

3分钟告别机械键盘连击:精准修复打字困扰的Windows神器

3分钟告别机械键盘连击&#xff1a;精准修复打字困扰的Windows神器 【免费下载链接】KeyboardChatterBlocker A handy quick tool for blocking mechanical keyboard chatter. 项目地址: https://gitcode.com/gh_mirrors/ke/KeyboardChatterBlocker 机械键盘连击问题让无…...

从游戏排行榜到实时榜单:手把手用无旋Treap(Fhq Treap)实现一个高性能排名系统

从游戏排行榜到实时榜单&#xff1a;手把手用无旋Treap&#xff08;Fhq Treap&#xff09;实现一个高性能排名系统 在当今的互联网应用中&#xff0c;实时排名系统无处不在——从游戏中的玩家战力榜&#xff0c;到直播平台的礼物贡献榜&#xff0c;再到电商的热销商品排行。这些…...

Python+Mediamtx实战:5分钟搞定WebRTC视频流帧捕获(附完整代码)

PythonMediamtx实战&#xff1a;5分钟搞定WebRTC视频流帧捕获&#xff08;附完整代码&#xff09; 在实时视频处理领域&#xff0c;WebRTC技术因其低延迟和点对点传输特性而备受青睐。本文将带你快速搭建一个基于Mediamtx流媒体服务器和Python的WebRTC视频帧捕获系统&#xff0…...