append函數更換底層數組,是不是等于這時候切片就是一個新的數組?
append函數更換底層數組,是不是等于這時候切片就是一個新的數組?
我測試了一下,如果append沒有超過切片容量的話是修改原數組,如果超過切片的容量的話是更換數組,這個是怎么個機制?這樣設計有點繞,是針對什么樣的實際場景呢?
append函數更換底層數組,是不是等于這時候切片就是一個新的數組?
我測試了一下,如果append沒有超過切片容量的話是修改原數組,如果超過切片的容量的話是更換數組,這個是怎么個機制?這樣設計有點繞,是針對什么樣的實際場景呢?
2018-01-07
舉報
2018-01-07
首先明確 append 為Go的預聲明標識符(也就是俗稱內置函數),切片僅僅是對go數組的抽象。
內建函數append將元素追加到切片的末尾。若它有足夠的容量,其目標就會重新切片以容納新的元素。否則,就會分配一個新的基本數組。append返回更新后的切片,因此必須存儲追加后的結果。
作為特例,可以向一個字節切片append字符串,如下: