go 切片对数组的修改

时间:2020-07-15 23:02:25   收藏:0   阅读:78

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...)

  

 

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!