go语言切片的长度len()和容量cap()

切片的三大属性

切片除了指针(指向切片第一个元素所对应的底层数组的元素的内存地址)之外,还有两个重要的属性,分别是长度和容量。分别可以用len()函数和cap()函数的返回值获取。除此之外,二者是不同的。我们可以先来看一个实例。

package main

import "fmt"

func main() {
	s := []int{1, 2, 3, 4, 5, 6}
	fmt.Printf("s的长度为%d,容量为%d \n", len(s), cap(s))
	s0 := s[0:2]
	fmt.Printf("s0的长度为%d,容量为%d \n", len(s0), cap(s0))
	var arr [9]int = [9]int{1, 2, 3, 4, 5, 6, 7, 8, 9}
	s1 := arr[2:8]
	fmt.Printf("s1的长度为%d,容量为%d \n", len(s1), cap(s1))
	s2 := s1[2:]
	fmt.Printf("s2的长度为%d,容量为%d \n", len(s2), cap(s2))

}
————————————————————————
代码输出:
s的长度为6,容量为6 
s0的长度为2,容量为6 
s1的长度为6,容量为7 
s2的长度为4,容量为5 

切片的长度和容量的区别

如上实例代码,从切片s和s0我们可以明显看出,切片的长度和容量是完全不同的,从切片s1和s2我们也可以理解到容量和长度的区别:

  • 切片长度len:表示的是切片元素的个数;
  • 切片容量cap:表示的是切片指针指向切片底层(数组,如s1,或切片,如s2)的元素到最后一个的个数;

len()方法

切片slice的len()方法可以返回切片中元素的个数。


cap()方法

cap()方法返回切片slice的容量,及slice指针指向的底层数组或切片的元素到最后一个元素的个数。


切片声明时指定长度和容量的方法

我们可以用make( [ ]type, len, cap )的方法来声明切片的同时指定其长度和容量,当容量省略时,容量默认等于长度。

package main

import "fmt"

func main() {
	s := make([]int, 5, 10)
	fmt.Printf("s的长度为%d,容量为%d \n", len(s), cap(s))
	fmt.Println(s)

}
————————————————————————————
代码输出:
s的长度为5,容量为10 
[0 0 0 0 0]

全栈后端 / go语法 :













Copyright © 2022-2024 笨鸟工具 x1y1z1.com All Rights Reserved.