首頁 >後端開發 >Golang >golang數組和切片的差別是什麼

golang數組和切片的差別是什麼

silencement
silencement原創
2019-12-25 14:02:454084瀏覽

golang數組和切片的差別是什麼

陣列

是內建(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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn