咖啡伴侶

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

          golang slice Append

          Posted on 2013-11-05 16:39 oathleo 閱讀(4520) 評論(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
          主站蜘蛛池模板: 昭平县| 仁怀市| 游戏| 芷江| 樟树市| 徐州市| 孝感市| 柘荣县| 青阳县| 汉沽区| 彝良县| 临澧县| 德化县| 法库县| 碌曲县| 利川市| 红桥区| 龙门县| 达拉特旗| 晋宁县| 金湖县| 大邑县| 阜宁县| 中方县| 屏东县| 朝阳市| 嘉鱼县| 谢通门县| 商都县| 响水县| 安福县| 永胜县| 丁青县| 眉山市| 江陵县| 庆元县| 衡水市| 麻阳| 洪雅县| 扬州市| 望都县|