12.深浅拷贝
# 01.深浅拷贝
# 1.1 深浅拷贝定义
- 浅拷贝就是只拷贝指针的值,指针指向的内容只有一份。
- 而深拷贝是把指针指向的值拷贝一份。
- golang里面也有浅拷贝和深拷贝。
- slice的浅拷贝就是指slice变量的赋值操作。
- slice的深拷贝就是指使用内置的copy函数来拷贝两个slice。
# 1.2 深浅拷贝代码举例
package main
import "fmt"
func main() {
SliceShallowCopy()
SliceDeepCopy()
}
func SliceShallowCopy() {
src := []byte {1,2,3,4,5,6}
dst := src
fmt.Println("浅拷贝原始数据",src) // [1 2 3 4 5 6]
dst[0]=10
// 修改拷贝数据,原始数据会以前跟着改变
fmt.Println("after modify[src]:",src) // [10 2 3 4 5 6]
}
func SliceDeepCopy() {
src := []byte {1,2,3,4,5,6}
var dst = make([]byte, len(src))
copy(dst[:], src)
fmt.Println("深拷贝前:",src) // [1 2 3 4 5 6]
dst[0]=10
fmt.Println("深拷贝修改拷贝数据值后:",src) // [1 2 3 4 5 6]
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
编辑 (opens new window)
上次更新: 2024/3/13 15:35:10