咖啡伴侶

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

          golang slice Append

          Posted on 2013-11-05 16:39 oathleo 閱讀(4521) 評論(0)  編輯  收藏 所屬分類: Golang
          s2 := append(s1, *)

          切片s1上記錄的切片信息復制給s2,

          1.如果s1指向的底層array長度不夠,append的過程會發(fā)生如下操作:內存中不僅新開辟一塊區(qū)域存儲append后的切片信息,而且需要新開辟一塊區(qū)域存儲底層array(復制原來的array至這塊新array中),最后再append新數(shù)據(jù)進新array中,這樣,s2指向新array。

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

          開辟一塊區(qū)域存儲底層array 使用下面的策略:
          1.如果 增加的 len < s的cap 則 新s的cap*2
          2.如果 增加的 len > s的cap 則 新s的cap = 老cap + 增加數(shù)據(jù)的 len
          主站蜘蛛池模板: 石阡县| 五河县| 阆中市| 徐闻县| 庐江县| 绥棱县| 惠水县| 宝兴县| 环江| 丹巴县| 双柏县| 佛学| 河源市| 平顺县| 新安县| 依兰县| 安龙县| 体育| 安远县| 格尔木市| 屯昌县| 新乐市| 辽宁省| 克拉玛依市| 新闻| 邯郸县| 蛟河市| 靖安县| 西华县| 呼图壁县| 西乌珠穆沁旗| 蒙自县| 铜梁县| 凤山县| 宜都市| 蒙城县| 曲周县| 江口县| 汪清县| 开化县| 任丘市|