咖啡伴侶

          呆在上海
          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
          主站蜘蛛池模板: 怀来县| 香港 | 江安县| 饶阳县| 得荣县| 溧阳市| 中山市| 深泽县| 吴江市| 吉安市| 襄樊市| 潍坊市| 泰和县| 当阳市| 衡南县| 涡阳县| 鄂尔多斯市| 印江| 乌兰县| 广丰县| 镇平县| 同江市| 石家庄市| 岐山县| 新昌县| 宁强县| 濮阳县| 德化县| 江孜县| 龙南县| 尼玛县| 定州市| 荔浦县| 延边| 张家口市| 启东市| 平南县| 登封市| 富源县| 武宣县| 宜宾县|