go 切片原理

type slice struct {
   ptr *Elem  //指向本地數組
   len int    //當前切片長度
   cap int    //切片容量
}


/*切片容量與擴容
1.make([]int,len,cap) //直接指定容量,避免後期擴容操作
2.當容量滿的時候,擴容,規則:new_len = 2*(old_len+add_len)

注意:
多個切片可能共享一個本地數組,所以對切片的修改可能影響其他的切片,
發生擴容後也可能影響不到原來的切片,所以修改後記得重新複製給原來的切片
擴容操作在 append函數中發生

切片零值是 nil

*/

圖示:

這個是 slice 的數據結構,它很簡單,一個指向真實 array 地址的指針 ptr ,slice 的長度 len 和容量 cap 。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章