Golang的slice為何一定要len和cap二者
問題
- 始終覺得slice的定義只需要len即可,cap有什麼好處呢?
答案
-
cap主要是為了讓slice提供可變長度。
試想,如果沒有cap,只有len。
-
做法
sliceA的長度擴充套件為20,len=20,此時有用元素為11個,還有9個空位。
sliceA對外界暴露出來的介面只有ptr和len=20,此時如果需要再插入一個元素。
到底sliceA應該擴充套件呢還是可以繼續在原來的基礎直接插入呢,同時應該從哪個index插入呢?
這些問題在有了len和cap的組合之後就可以迎刃而解了。
-
本文來自:簡書
感謝作者:空即是色即是色即是空
檢視原文:ofollow,noindex">Golang的slice為何一定要len和cap二者