import "fmt"
func main() {
arr := [5]int{1, 2, 3, 4, 5}
slice := arr[1:3] //左闭右开
fmt.Println(len(slice)) // 输出: 2,实际元素个数
fmt.Println(cap(slice)) // 输出: 4,底层数组的长度(从索引1到末尾)
}
len 返回切片或数组的实际元素个数,而 cap 返回切片的容量或数组的长度(数组没有容量的概念)。
- 对于切片,len 和 cap 的值可以不同,因为切片可能只是底层数组的一部分。len 是实际元素的个数,而 cap 是底层数组的长度。
- 对于数组,len 和 cap 的值相等,因为数组的长度是固定的。

x[2:5]到x[2:5:7]的cap从8到5是因为后者指定了切片的最大容量为7。