陣列
是內建(build-in)類型,是一組同類型資料的集合,它是值類型,透過從0開始的下標索引存取元素值。在初始化後長度是固定的,
無法修改其長度。當作為方法的參數傳入時將複製一份數組而不是引用同一指標。數組的長度也是其類型的一部分,透過內建函數
len(array)來取得其長度。
注意:和C中的陣列相比,又是有一些不同的
1、Go中的陣列是值類型,換句話說,如果你將一個數組賦值給另一個數組,那麼,實際上就是將整個數組拷貝一份
2、如果Go中的數組作為函數的參數,那麼實際傳遞的參數就是一份數組的拷貝,而不是數組的指標。這個和C要區分開。因此,在Go
中如果將陣列作為函數的參數傳遞的話,那麼效率就肯定沒有傳遞指標高了。
3、array的長度也是Type的一部分,這樣就表示[10]int和[20]int是不一樣的。
推薦學習《golang教程》
切片
數組的長度不可改變,在特定場景中這樣的集合就不太適用,Go中提供了一種靈活,功能強悍的內建類型Slices切片(“動態數組"),與
數組相比切片的長度是不固定的,可以追加元素,在追加時可能會使切片的容量增加。切片中有兩個概念:一是len長度,二是cap容
量,長度是指已經被賦過值的最大下標 1,可透過內建函數len()取得。容量是指切片目前可容納的最多元素個數,可透過內建函數
cap()取得。切片是引用類型,因此在傳遞切片時將引用相同指針,修改值將會影響其他的物件。
以上是golang數組和切片的差別是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!