1 package main
2
3 import "fmt"
4
5 func main() {
6 /*
7 深拷贝:拷贝的是数据本身。
8 值类型的数据,默认都是深拷贝:array,int,float,string,bool,struct
9
10
11 浅拷贝:拷贝的是数据 地址。
12 导致多个变量指向同一块内存
13 引用类型的数据,默认都是浅拷贝:slice,map,
14
15 因为切片是引用类型的数据,直接拷贝的是地址。
16
17 func copy(dst, src []Type) int
18 可以实现切片的拷贝
19
20 */
21
22 s1 := []int{1, 2, 3, 4}
23 s2 := make([]int, 0) //len:0,cap:0
24 for i := 0; i < len(s1); i++ {
25 s2 = append(s2, s1[i])
26 }
27 fmt.Println(s1) // [1 2 3 4]
28 fmt.Println(s2) // [1 2 3 4]
29
30 s1[0] = 100
31 fmt.Println(s1) // [100 2 3 4]
32 fmt.Println(s2) // [1 2 3 4]
33
34 //copy()
35 s3 := []int{7, 8, 9}
36 fmt.Println(s2) // [1 2 3 4]
37 fmt.Println(s3) // [7 8 9]
38
39 // copy(s2, s3) // 将s3中的元素,拷贝到s2中
40 // fmt.Println(s2) // [7 8 9 4]
41
42 // copy(s3, s2) // 将s2中的元素,拷贝到s3中
43 // fmt.Println(s3) // [1 2 3]
44
45 copy(s3[1:], s2[2:])
46 fmt.Println(s3) // [7 3 4]
47
48 }