当前位置:网站首页>【愚公系列】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)
}

边栏推荐
猜你喜欢
随机推荐
Error EPERM operation not permitted, mkdir ‘Dsoftwarenodejsnode_cache_cacach两种解决办法
pycharm专业版使用
零分贝超静音无线鼠标!数量有限!!先到先得!!!【元旦专享】
基于EEMD+GRU+MLR的时间序列预测
Network skills: teach you to install batteries on the router, you can still surf the Internet when the power is cut off!
What is the connection between GRNN, RBF, PNN, KELM?
A priori box (Anchor) in target detection
Verilog“七宗罪”
数据库文档生成工具V1.0
Online public account article content to audio file practical gadget
IDEA 控制台 中文乱码问题(如果网上教程都无法解决你的问题的话)
JVM 快速检测死锁
GRNN、RBF、PNN、KELM之间究竟有什么联系?
MAML原理讲解和代码实现
[漏洞问题] log4j漏洞 关于2.17.0升级到2.18.0 方案
Computer knowledge: desktop computers should choose the brand and assembly, worthy of collection
缓动动画,有关窗口的一些常见操作,BOM操作
数据特征预处理——缺失值的查看方式及处理
MySQL(4)
元素的增删克隆以及利用增删来显示数据到页面上









