func cap(v Type) int
返回指定类型的容量,根据不同类型,返回意义不同。
数组: 元素个数 (和len(v)一样).
数组指针: *v的元素个数 (和len(v)一样).
Slice: the maximum length the slice can reach when resliced;如果v==nil, cap(v) 值为0;
Channel: channel 缓存区的容量, 以其中的元素为单位;如果v==nil, cap(v) 值为0;
参考代码:
package main import ( "fmt" ) func main() { arr := []int{, , } fmt.Println("cap(arr) : ", cap(arr)) fmt.Println("len(arr) : ", len(arr)) //长度和容量都为5 slice1 := make([]string, ) //长度为3,容量为5 slice2 := make([]int, , ) fmt.Println("cap(slice1) : ", cap(slice1)) fmt.Println("cap(slice2) : ", cap(slice2)) c1 := make(chan int) c2 := make(chan int, ) fmt.Println("cap(c1) : ", cap(c1)) fmt.Println("cap(c2) : ", cap(c2)) }
输出结果:
cap(arr) : 3
len(arr) : 3
cap(slice1) : 5
cap(slice2) : 5
cap(c1) : 0
cap(c2) : 2