go切片窺探

go切片窺探

切片(slice)是對數組一個連續片段的引用(該數組我們稱之爲相關數組,通常是匿名的),所以切片是一個引用類型(因此更類似於C/C++中的數組類型,或者Python中的list類型)。這個片段可以是整個數組,或者是由起始和終止索引標識的一些項的子集。需要注意的是,終止索引標識的項不包括在切片內。切片提供了一個相關數組的動態窗口。

切片是可索引的,並且可以由 len() 函數獲取長度。

給定項的切片索引可能比相關數組的相同元素的索引小。和數組不同的是,切片的長度可以在運行時修改, 最小爲 0 最大爲相關數組的長度: 切片是一個 長度可變的數組。

切片提供了計算容量的函數cap(),可以測量切片最長可以達到多少

它等於切片的長度 + 數組除切片之外的長度

如果 s 是一個切片, cap(s) 就是從 s[0] 到數組末尾的數組長度。

切片的長度永遠不會超過它的容量, 所以對於 切片 s 來說該不等式永遠成立:

0 <= len(s) <= cap(s)

多個切片如果表示同一個數組的片段,它們可以共享數據;因此一個切片和相關數組的其他切片是共享存儲的, 相反,不同的數組總是代表不同的存儲。 數組實際上是切片的構建塊。

因爲切片是引用, 所以它們不需要使用額外的內存並且比使用數組更有效率, 所以在 Go 代碼中 切片比數組更常用。

那麼如何理解切片和數組之間的關係,以及切片該如何使用,下面我們來一起探討

在探討之前我們需要會簡單的使用切片,如創建,使用。

切片的使用

切片的聲明格式爲:

var identifier []type //(不需要說明長度)

我們不需要顯示聲明

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章