温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Go语言中怎么将数组切片复制/拷贝

发布时间:2021-08-03 14:42:44 来源:亿速云 阅读:137 作者:Leah 栏目:编程语言

本篇文章给大家分享的是有关Go语言中怎么将数组切片复制/拷贝,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

func main() {   arr := [3]int{1, 2, 3}   arr2 := arr   arr3 := &arr   fmt.Printf("原数组:%v \n", arr)   fmt.Printf("赋值方式复制的数组:%v \n", arr2)   fmt.Printf("引用方式复制的数组:%v \n", *arr3)}

Go语言中怎么将数组切片复制/拷贝

Go语言中怎么将数组切片复制/拷贝

func main() {   arr := [3]int{1, 2, 3}   arr2 := arr   arr3 := &arr   fmt.Printf("原数组:%v \n", arr)   fmt.Printf("赋值方式复制的数组:%v \n", arr2)   fmt.Printf("引用方式复制的数组:%v \n", *arr3)

  arr[1] = 1000   fmt.Printf("改变后原数组:%v \n", arr)   fmt.Printf("改变后赋值方式复制的数组:%v \n", arr2)   fmt.Printf("改变后引用方式复制的数组:%v \n", *arr3)}

Go语言中怎么将数组切片复制/拷贝

要理解这个关系很简单,把这段代码画个底层结构图就明白了:

Go语言中怎么将数组切片复制/拷贝

arr2获得的是arr的数据副本,也就是说赋值方式是复制了原数组的底层数据;

而arr3获得的是arr地址的副本,即引用赋值的方式复制的是地址,这个地址指向的还是原来的数据。

所以也就出现了,当arr中原数据被修改,直接赋值而来的数组arr2不受影响,而引用赋值获得的数组arr3也跟着改变了。

另外如果你操作的是切片,那么还真有个内置的方法可以完成复制。

func main() {   arr2 := []int{1, 2, 3}   arr3 := []int{4,5,6}   fmt.Printf("复制前的数组:%v \n", arr2)   copy(arr2, arr3)   fmt.Printf("复制后的数组:%v \n", arr2)}

通过copy函数,将底层数据进行了复制替换,所以新的切片也不会受原切片的影响。

针对复制拷贝总结如下:

如果复制数组,可以直接通过赋值进行复制;

如果复制切片,可以直接使用copy();

以上就是Go语言中怎么将数组切片复制/拷贝,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI