咖啡伴侶

          呆在上海
          posts - 163, comments - 156, trackbacks - 0, articles - 2

          golang slice Append

          Posted on 2013-11-05 16:39 oathleo 閱讀(4525) 評論(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
          主站蜘蛛池模板: 米泉市| 广州市| 桃园县| 马山县| 沂水县| 西藏| 永昌县| 东丰县| 彝良县| 镇平县| 河东区| 南陵县| 彭山县| 黔江区| 南江县| 西昌市| 楚雄市| 酒泉市| 从化市| 正安县| 富源县| 中方县| 三台县| 祁门县| 若羌县| 融水| 晴隆县| 凤庆县| 胶州市| 突泉县| 呈贡县| 五寨县| 塘沽区| 黄梅县| 那曲县| 伊吾县| 平江县| 临夏市| 特克斯县| 浙江省| 丹江口市|