package main
import "fmt"
func testCap() {
//长度为8类型为string的数组
a := [...]string {"a","b","c","d","e","f","g","h"}
b :=a[1:3]
fmt.Printf("b:%v len:%d cap:%d\n",b,len(b),cap(b))
//切片再切片
b = b[:cap(b)]
fmt.Printf("b:%v len:%d cap:%d\n",b,len(b),cap(b))
}
func main() {
testCap()
}
上面代码:
11行输出:b:[b c] len:2 cap:7
容量为什么为7而不是数组a的原始值8:
因为切片的start是从a数组的index(1)开始截取的,不会把之前的index(0)计算在内 容量和长度是两码事,容量是指这个切片可以放多少个值,长度是切片start至end-1
15行输出:b:[b c d e f g h] len:7 cap:7
这里是指从下标0开始至容量末尾的值全部截取
注:
这种方法的切片,也是引用的数组的值,当切片修改后,原数组对应的切片位置的值也会发生相应的改变