Posted on 2013-11-05 16:39
oathleo 閱讀(4517)
評論(0) 編輯 收藏 所屬分類:
Golang
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