go make切片中len() 和 cap() 的差異

對於make slice而言,有兩個概念須要搞清楚:長度跟容量。數組

  • 容量表示底層數組的大小,長度是你可使用的大小。
  • 容量的用處在哪?在與當你用 appen d擴展長度時,若是新的長度小於容量,不會更換底層數組,不然,go 會新申請一個底層數組,拷貝這邊的值過去,把原來的數組丟掉。也就是說,容量的用途是:在數據拷貝和內存申請的消耗與內存佔用之間提供一個權衡。
  • 而長度,則是爲了幫助你限制切片可用成員的數量,提供邊界查詢的。因此用 make 申請好空間後,須要注意不要越界【越 len 】
相關文章
相關標籤/搜索