码迷,mamicode.com
首页 > 编程语言 > 详细

go 切片对数组的修改

时间:2020-07-15 23:02:25      阅读:78      评论:0      收藏:0      [点我收藏+]

标签:地址   range   ice   src   数组   变化   end   切片   span   

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 切片对数组的修改

标签:地址   range   ice   src   数组   变化   end   切片   span   

原文地址:https://www.cnblogs.com/9527s/p/13306491.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!