【愚公系列】2022年07月 Go教学课程 027-深拷贝和浅拷贝
Go 2022 系列 课程 拷贝 愚公 教学 07
2023-06-13 09:12:50 时间
文章目录
一、深拷贝和浅拷贝
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)
}
相关文章
- 【愚公系列】2022年07月 Go教学课程 028-函数小结案例(通讯录)
- 【愚公系列】2022年07月 Go教学课程 026-结构体
- 【愚公系列】2022年08月 Go教学课程 030-对象继承
- 【愚公系列】2022年08月 Go教学课程 034-接口和多态
- 【愚公系列】2022年08月 Go教学课程 035-接口和继承和转换与空接口
- 2022-07-24:以下go语言代码输出什么?A:[]int{};B:[]int(nil);C:panic;D:编译错误。pa
- 2022-07-26:以下go语言代码输出什么?A:5;B:hello;C:编译错误;D:运行错误。package mainim
- 2022-07-28:以下go语言代码输出什么?A:AA;B:AB;C:BA;D:BB。package mainimport (
- 2022-08-17:以下go语言代码输出什么?A:运行时 panic;B:32;C:编译错误;D:0。package main
- 2022-09-02:以下go语言代码输出什么?A:9;B:11;C:编译错误;D:不确定。package mainimport
- 2022-10-10:以下go语言代码输出什么?A:[1 2 3 0 1 2];B:死循环;C:[1 2 3 1 2 3];D:
- GO语言实战之函数与方法
- Go-包管理-go install
- Go语言圣经–示例: 并发的Clock服务习题详解编程语言
- 语言结合SQL Server,Go谱写新篇章(sqlserver的go)
- Go语言操作Oracle数据库技术实践(go操作oracle)
- 快跟上趋势,GO DB ORACLE(go db oracle)
- 我为什么喜欢Go语言(简洁的Go语言)