len() 和 cap() 函数
切片的长度是切片中元素的数量。切片的容量是从创建切片的索引开始的底层数组中元素的数量。
切片是可索引的,并且可以由 len() 方法获取长度
切片提供了计算容量的方法 cap() 可以测量切片最长可以达到多少
package mainimport "fmt"func main() { var numbers = make([]int,3,5) printSlice(numbers)}func printSlice(x []int){ fmt.Printf("len=%d cap=%d slice=%vn",len(x),cap(x),x)}运行结果
len=3 cap=5 slice=[0 0 0]
空切片
一个切片在未初始化之前默认为 nil,长度为 0
package mainimport "fmt"func main() { var numbers []int printSlice(numbers) if(numbers == nil){ fmt.Printf("切片是空的") }}func printSlice(x []int){ fmt.Printf("len=%d cap=%d slice=%vn",len(x),cap(x),x)}运行结果
len=0 cap=0 slice=[]切片是空的
package mainimport "fmt"func main() { numbers := []int{0,1,2,3,4,5,6,7,8} printSlice(numbers) fmt.Println("numbers ==", numbers) fmt.Println("numbers[1:4] ==", numbers[1:4]) fmt.Println("numbers[:3] ==", numbers[:3]) fmt.Println("numbers[4:] ==", numbers[4:]) numbers1 := make([]int,0,5) printSlice(numbers1) number2 := numbers[:2] printSlice(number2) number3 := numbers[2:5] printSlice(number3)}func printSlice(x []int){ fmt.Printf("len=%d cap=%d slice=%vn",len(x),cap(x),x)}运行结果
len=9 cap=9 slice=[0 1 2 3 4 5 6 7 8]numbers == [0 1 2 3 4 5 6 7 8]numbers[1:4] == [1 2 3]numbers[:3] == [0 1 2]numbers[4:] == [4 5 6 7 8]len=0 cap=5 slice=[]len=2 cap=9 slice=[0 1]len=3 cap=7 slice=[2 3 4]



