go 切片對陣列的修改
阿新 • • 發佈:2020-07-15
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...)