Home  >  Article  >  Backend Development  >  What does golang cap mean?

What does golang cap mean?

(*-*)浩
(*-*)浩Original
2019-12-03 09:13:104867browse

What does golang cap mean?

cap is mainly to allow slice to provide variable length.

Just imagine, if there is no cap, there is only len. (Recommended learning: go)

The length of sliceA is 10, len=10, and it has been filled with elements; now the eleventh element needs to be inserted.

How to do it

The length of sliceA is extended to 20, len=20. At this time, there are 11 useful elements and 9 vacancies.

The only interfaces sliceA exposes to the outside world are ptr and len=20. At this time, if you need to insert another element.

Should sliceA be extended or can it be inserted directly on the original basis? At the same time, from which index should it be inserted?

These problems can be solved with the combination of len and cap.

cap() can be used to check the capacity of an array or slice

In an array, the length is fixed and immutable, so the difference between len(arr) and cap(arr) The output is always the same

In slice, len(sli) indicates how many visible elements there are (that is, the number of elements seen when printing the element directly), while cap(sli) indicates how many elements there are A , for example:

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

The cap() function returns the space size allocated by the array slice.

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

The output of this program is:

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

The above is the detailed content of What does golang cap mean?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn