golang slice Append

s2 := append(s1, *)


切片s1上記錄的切片信息複製給s2,

1.若是s1指向的底層array長度不夠,append的過程會發生以下操做:內存中不只新開闢一塊區域存儲append後的切片信息,並且須要新開闢一塊區域存儲底層array(複製原來的array至這塊新array中),最後再append新數據進新array中,這樣,s2指向新array。

2.若是s1指向的底層array長度夠,
s2和s1指向同一個array,append的結果是內存中新開闢一個區域存儲新切片信息。

開闢一塊區域存儲底層array 使用下面的策略:
1.若是 增長的 len < s的cap 則 新s的cap*2
2.若是 增長的 len > s的cap 則 新s的cap = 老cap + 增長數據的 len
app

相關文章
相關標籤/搜索