首頁 >後端開發 >Golang >golang cap是什麼意思

golang cap是什麼意思

(*-*)浩
(*-*)浩原創
2019-12-03 09:13:104912瀏覽

golang cap是什麼意思

cap主要是為了讓slice提供可變長度。

試想,如果沒有cap,只有len。            (建議學習:go

sliceA長度為10,len=10,已經插滿元素;現在要插入第十個元素。

做法

sliceA的長度擴充為20,len=20,此時有用元素為11個,還有9個空位。

sliceA對外界暴露出來的介面只有ptr和len=20,此時如果需要再插入一個元素。

到底sliceA該擴充呢還是可以繼續在原來的基礎直接插入呢,同時又該從哪個index插入呢?

這些問題在有了len和cap的組合之後就可以迎刃而解了。

cap()可以用來查看數組或slice的容量

#在數組中由於長度固定不可變,因此len(arr)和cap(arr)的輸出永遠相同

在slice中,len(sli)表示可見元素有幾個(也即直接列印元素看到的元素個數),而cap(sli)表示所有元素有幾個,例如:

arr := []int{2, 3, 5, 7, 11, 13}
sli := arr[1:4]
fmt.Println(sli)
fmt.Println(len(sli))
fmt.Println(cap(sli))

cap()函數傳回的是陣列切片分配的空間大小。

package main 
 
import "fmt" 
 
func main() { 
    mySlice := make([]int, 5, 10)  
 
    fmt.Println("len(mySlice):", len(mySlice)) 
    fmt.Println("cap(mySlice):", cap(mySlice)) 
}

該程式的輸出結果為:

len(mySlice): 5
cap(mySlice): 10

以上是golang cap是什麼意思的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn