1. 程式人生 > 其它 >golang slice 和 array區別

golang slice 和 array區別

陣列: 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

  1.   動態陣列建立,類似建立陣列,但是沒有指定固定長度
  2.   var al []int //建立slice
  3.   sl := make([]int,10) //建立有10個元素的slice
  4.   sl:=[]int{1,2,3} //建立有初始化元素的slice
  5.    

2.先建立陣列,在陣列的基礎上建立切片slice

  1.   var arr =[10]{1,2,3,4,5。6}
  2.   sl := arr[2:5] //建立有3個元素的slice
  3.    

3.slice有一些簡便的操作

  1.   - `slice`的預設開始位置是0,`ar[:n]`等價於`ar[0:n]`
  2.   - `slice`的第二個序列預設是陣列的長度,`ar[n:]`等價於`ar[n:len(ar)]`

陣列和slice的區別

  • 宣告陣列時,方括號內寫明瞭陣列的長度或者...,宣告slice時候,方括號內為空
  • 作為函式引數時,陣列傳遞的是陣列的副本,而slice傳遞的是指標。