copy函数的作用
copy函数作用: 将一个切片复制到另一个切片
funcmain(){a:=[]int{1,2,3}b:=[]int{}copy(b,a)fmt.Println(a,b)}
输出结果:
[123][]
因为copy时,copy的元素个数是 min(len(src), len(dst)), []int{}声明的切片长度为0,所以只能复制0个元素。
copy函数和等号赋值的区别:
funcmain(){a:=[]int{1,2,3}b:=make([]int,3)copy(b,a)b[0]=11fmt.Println(a,b)}
输出结果:
[123][1123]
因为copy的情况下,两个slice引用的是不同的底层数组,改变一个不影响另一个。
funcmain(){a:=[]int{1,2,3}//b:=make([]int,3)//copy(b,a)b:=ab[0]=11fmt.Println(a,b)}
输出结果:
[1123][1123]
等号复制时,两个切片引用的同一个数组,改变一个会同时修改另一个。
往切片b append数据时,超出了make的容量,b会引用一个新的底层数组,改变b不影响a。
funcmain(){a:=[]int{1,2,3}b:=ab=append(b,4)b[0]=11fmt.Println(a,b)}
输出结果:
[123][11234]