12.深浅拷贝
# 01.深浅拷贝
# 1.1 深浅拷贝定义
- 浅拷贝就是
只拷贝指针的值
,指针指向的内容只有一份
而深拷贝是把指针指向的值拷贝一份
- 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
上次更新: 2024/10/15 16:27:13