在Go语言中,`cap`是一个内建函数,用于获取不同类型对象的容量。以下是`cap`函数在不同数据类型上的应用示例:
数组
```go
package main
import "fmt"
func main() {
arr := int{1, 2, 3, 4, 5}
fmt.Println("数组容量:", cap(arr)) // 输出: 数组容量: 5
}
```
切片
```go
package main
import "fmt"
func main() {
slice := make([]int, 5, 10)
fmt.Println("切片容量:", cap(slice)) // 输出: 切片容量: 10
subslice := slice[1:3]
fmt.Println("子切片容量:", cap(subslice)) // 输出: 子切片容量: 4
}
```
通道
```go
package main
import "fmt"
func main() {
ch := make(chan int, 5)
fmt.Println("通道容量:", cap(ch)) // 输出: 通道容量: 5
}
```
建议
数组:数组的容量在创建时确定,且与长度相同。
切片:切片的容量是从切片的起始位置到底层数组末尾的元素个数。
通道:通道的容量是通道缓冲区的大小,如果是无缓冲通道,则容量为0。
了解这些概念有助于在编写程序时更有效地管理内存和优化性能。