前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【愚公系列】2022年07月 Go教学课程 027-深拷贝和浅拷贝

【愚公系列】2022年07月 Go教学课程 027-深拷贝和浅拷贝

作者头像
愚公搬代码
发布2022-09-19 15:27:04
1270
发布2022-09-19 15:27:04
举报
文章被收录于专栏:历史专栏

文章目录


一、深拷贝和浅拷贝

1.浅拷贝

浅拷贝是指对内存地址的复制,让目标对象指针和源对象指向同一片内存空间。go语言中赋值,函数传参, 函数返回值都是浅拷贝。

代码语言:javascript
复制
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()函数来实现引用类型的深拷贝。

代码语言:javascript
复制
语法:
copy(dst[], src[]) //copy(目标切片, 源切片) 将源切片的值拷贝进目标切片。
代码语言:javascript
复制
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)
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022/08/03 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 一、深拷贝和浅拷贝
    • 1.浅拷贝
      • 2.深拷贝
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档