golang的slice
宣告與定義
Go中的slice的宣告方法(有時候順便也定義了),主要分為下面幾種(以int為例):
[]int
後面可以也可以不跟上初始值,如
[]int []int {} []int {1,2,3}
另外,直接從陣列或者slice中再建立slice也是一種常見的模式:
c[l:h:c]
最後一種是通過make來建立:
make([]int, len, cap)
其中len,cap都是可選的,如果沒有cap,預設就是len那麼大,如果沒有len,預設就是0。
新增
內建函式append是範型的新增,可以新增一個或者多個元素,也可以直接新增另外一個slice,這時候,需要使用...
運算子進行解包,如:
append(a, [] int {1,2,3}...)
不常用但是有時候也有用的,就是在slice的頭部新增元素,象這樣:
append([]int{1,2,3}, a)
頭部新增開銷一般比較大,需要移動元素甚至重新分配記憶體。
空slice與nil slice
空slice是len與cap都為0的slice,而nil slice則沒有指向一個物件,這兩者是有區別的。