首页>>后端>>Golang->Golang切片copy复制和等号复制的区别详解

Golang切片copy复制和等号复制的区别详解

时间:2023-11-29 本站 点击:1

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]


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:/Golang/272.html