当前位置:网站首页>【愚公系列】2022年07月 Go教学课程 027-深拷贝和浅拷贝
【愚公系列】2022年07月 Go教学课程 027-深拷贝和浅拷贝
2022-08-04 05:55:00 【愚公搬代码】
一、深拷贝和浅拷贝
1.浅拷贝
浅拷贝是指对内存地址的复制,让目标对象指针和源对象指向同一片内存空间。go语言中赋值,函数传参, 函数返回值都是浅拷贝。
package main
import "fmt"
func main() {
a := []string{
"1", "2", "3"}
b := a
a[0] = "浅拷贝"
fmt.Println("a:", a)
fmt.Println("b:", b)
}
2.深拷贝
深拷贝是指拷贝对象的具体内容,二内存地址是自主分配的,拷贝结束之后俩个对象虽然存的值是一样的,但是内存地址不一样,俩个对象页互相不影响,互不干涉。
go语言中使用copy()函数来实现引用类型的深拷贝。
语法:
copy(dst[], src[]) //copy(目标切片, 源切片) 将源切片的值拷贝进目标切片。
package main
import "fmt"
func main() {
a := []string{
"1", "2", "3"}
// 初始化一个空数组
b := make([]string, len(a), cap(a))
copy(b, a)
a[0] = "深拷贝"
fmt.Println("a:", a)
fmt.Println("b:", b)
}
边栏推荐
猜你喜欢
随机推荐
电脑知识:台式电脑应该选择品牌和组装,值得收藏
西门子PLC1200与fanuc机器人进行profibus通讯
基于EEMD+GRU+MLR的时间序列预测
HbuilderX 启动微信小程序 无法打开项目
A priori box (Anchor) in target detection
SENet详解及Keras复现代码
狗都能看懂的Self-Attention讲解
如何画好业务架构图。
JVM工具之 JPS
ubuntu18.04安装redis教程
缓动动画,有关窗口的一些常见操作,BOM操作
数据库知识:SQLServer创建非sa用户笔记
Different lower_case_table_names settings for server (‘1‘) and data dictionary (‘0‘) 解决方案
元素的增删克隆以及利用增删来显示数据到页面上
数组的一些方法
Unable to preventDefault inside passive event listener due to target being treated as passive. See
[漏洞问题] log4j漏洞 关于2.17.0升级到2.18.0 方案
SystemVerilog-条件(三元)运算符
硬件知识:RTMP和RTSP传统流媒体协议介绍
mysql基础(4)