Go语言len()和cap():获取切片长度和容量
切片的长度是切片中元素的数量。切片的容量是从创建切片的索引开始的底层数组中元素的数量。切片可以通过 len() 方法获取长度,可以通过 cap() 方法获取容量。数组计算 cap() 结果与 len() 相同,具体使用细节如下所示。
package main import "fmt" func main(){ sliceCap() } func sliceCap(){ arr0 := [...]string{"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k"} fmt.Println("cap(arr0)=", cap(arr0), arr0) //截取数组, 形成切片 s01 := arr0[2:8] fmt.Printf("%T\n", s01) fmt.Println("cap(s01)=", cap(s01), s01) s02 := arr0[4:7] fmt.Println("cap(s02)=", cap(s02), s02) //截取切片, 形成切片 s03 := s01[3:9] fmt.Println("截取s01[3:9]后形成s03:", s03) s04 := s02[4:7] fmt.Println("截取s02[4:7]后形成s04:", s04) //切片是引用类型 s04[0] = "x" fmt.Print(arr0, s01, s02, s03, s04) }运行结果如下:
cap(arr0)= 11 [a b c d e f g h i j k]
[]string
cap(s01)= 9 [c d e f g h]
cap(s02)= 7 [e f g]
截取s01[3:9]后形成s03: [f g h i j k]
截取s02[4:7]后形成s04: [i j k]
[a b c d e f g h x j k] [c d e f g h] [e f g] [f g h x j k] [x j k]