golang 中使用数组创建slice时的注意事项
golang中,slice是对固定长度数组的一段切片,其底层是用对数值空间的指针实现的。 在golang中当使用一个数组来创建slice时如: var array [5]int = [5]int{1,2,3,4,5}
//切割出数组中的4个值,创建一个slice
myslice := array[0:4]
打印array的值为: 1,2,3,4,5 打印mysqlice的值为: 1,4 现在我们对myslice进行append操作 myslice = append(myslice,100)
打印array的值为: 1,100 打印mysqlice的值为: 1,100 现在我们再对myslice进行修改操作 myslice[0] = 50
打印array的值为: 50,100 打印mysqlice的值为: 50,100 当slice的长度没有超过创建是的数组的长度时,slice还是指向的创建时使用的数组。
现在myslice的长度已经和用来创建slice时使用的数组的长度一致了 myslice = append(myslice,200)
打印array的值为: 50,100,200
因为当myslice超出arr的长度时,Go语言会隐含式地对array做了copy,并让myslice内部的指针重新指向了新数值,所以一切预期中修改array的值的操作,都不会生效! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |