亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

append函數更換底層數組,是不是等于這時候切片就是一個新的數組?

append函數更換底層數組,是不是等于這時候切片就是一個新的數組?
我測試了一下,如果append沒有超過切片容量的話是修改原數組,如果超過切片的容量的話是更換數組,這個是怎么個機制?這樣設計有點繞,是針對什么樣的實際場景呢?

正在回答

1 回答

首先明確 append 為Go的預聲明標識符(也就是俗稱內置函數),切片僅僅是對go數組的抽象。

func?append
func?append(slice?[]Type,?elems?...Type)?[]Type

內建函數append將元素追加到切片的末尾。若它有足夠的容量,其目標就會重新切片以容納新的元素。否則,就會分配一個新的基本數組。append返回更新后的切片,因此必須存儲追加后的結果。

slice?=?append(slice,?elem1,?elem2)
slice?=?append(slice,?anotherSlice...)

作為特例,可以向一個字節切片append字符串,如下:

slice?=?append([]byte("hello?"),?"world"...)


0 回復 有任何疑惑可以回復我~
#1

慕標5084476 提問者

當容量滿足的情況下append會改變底層數組元素,當超出容量的情況下不會修改底層數組元素,那些情況下需要這種特性?
2018-01-07 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

append函數更換底層數組,是不是等于這時候切片就是一個新的數組?

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號