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 切片对数组的修改的主要内容,如果未能解决你的问题,请参考以下文章

go 切片对数组的修改

Go语言切片

Go切片实现

《Go题库·1》Golang里的数组和切片有了解过吗?

Go笔记:切片

你知道的Go切片扩容机制可能是错的