golang slice 和 array區別
阿新 • • 發佈:2022-12-08
陣列: var arr = [10]{1,2,3,4,5,6}
slice: var arr = []{1,2,3,4,5,6}
array 型別
array
是固定長度的陣列,使用前必須確定陣列長度
golang
array
特點:
-
golang
中的陣列是值型別
,也就是說,如果你將一個數組賦值給另外一個數組,那麼,實際上就是整個陣列拷貝了一份 - 如果
golang
中的陣列作為函式的引數,那麼實際傳遞的引數是一份陣列的拷貝,而不是陣列的指標 -
array
的長度也是Type
的一部分,這樣就說明[10]int
和[20]int
是不一樣的。
slice
型別
-
slice
是一個引用型別,是一個動態的指向陣列切片的指標。 -
slice
是一個不定長的,總是指向底層的陣列array
的資料結構。
1.建立slice
- 動態陣列建立,類似建立陣列,但是沒有指定固定長度
- var al []int //建立slice
- sl := make([]int,10) //建立有10個元素的slice
- sl:=[]int{1,2,3} //建立有初始化元素的slice
2.先建立陣列,在陣列的基礎上建立切片slice
- var arr =[10]{1,2,3,4,5。6}
- sl := arr[2:5] //建立有3個元素的slice
3.slice有一些簡便的操作
- - `slice`的預設開始位置是0,`ar[:n]`等價於`ar[0:n]`
- - `slice`的第二個序列預設是陣列的長度,`ar[n:]`等價於`ar[n:len(ar)]`
陣列和slice的區別
- 宣告陣列時,方括號內寫明瞭陣列的長度或者...,宣告slice時候,方括號內為空
- 作為函式引數時,陣列傳遞的是陣列的副本,而slice傳遞的是指標。