go 切片对数组的修改
Posted 9527s
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了go 切片对数组的修改相关的知识,希望对你有一定的参考价值。
go中数组是值拷贝,
切片是对上层数组的表示,应该是使用的是数组地址,修改时是直接对原来的数组进行修改
切片作为函数参数依旧如此
var array [5]int=[5]int{1,2,3,4,5}//可以简化为array:=[5]int{1,2,3,4,5} 初学所以没有简化
var slice[]int =array[1:3]
fmt.Println(array)
for i:=range slice{
slice[i]+=100
}
fmt.Println(array)
fmt.Println(slice)
输出
说明切片是对数组的引用,更改切片时原数组会发生变化。
因为切片保留对数组的引用,切片在,数组内存不能回收,所以数组大而使用切片为其中一小部分时应该使用切片的拷贝方式。
var array [7]int=[7]int{1,2,3,4,5,6,7}
var slice[]int =array[:3]
sliceneed:=make([]int,len(slice))
copy(sliceneed,slice)
fmt.Println(sliceneed)
结果
追加一个一个切片到另一个后面可以用append方式带...
var array [5]int=[5]int{1,2,3,4,5}//可以简化为array:=[5]int{1,2,3,4,5} 初学所以没有简化
var slice[]int =array[1:3]
fruits := []int{6,7}
slice =append(slice,fruits...)
以上是关于go 切片对数组的修改的主要内容,如果未能解决你的问题,请参考以下文章