一.切片的特性
- 可以切除来一个新的子片
- 长度可变,长度元素个数
- 容量可变,长度和容量可以不一样
- 底层用数组,(顺序表访问快)
- 推荐使用make定义,可以指定初始容量大小,减少频发扩容
二.切片定义
//1.切片定义方式1---字面量定义
- 适用于少了元素
var s0 = []int{1, 3, 5, 7, 9} //{}里面是字面量;字面量定义就是初始化的时候把元素写好了,长度为5,容量为5
fmt.Printf("s0的类型:%T s0的值:%[1]v s0的长度%d s0的容量%d\n", s0, len(s0), cap(s0))
结果
2.声明切片方式1
var s1 []int // 仅是声明,零值填充,长度为0,容量为0
fmt.Println(s1, len(s1), cap(s1), &s1)
fmt.Printf("%p %[1]T", &s1)
3.推导声明切片2
var s2 = []int{} //生成[]int切片,长度和容量都是0
fmt.Printf("s2的地址是:%p s2的类型是:%[1]T\n", &s2)
结果:
4.make声明切片1
- 用的多,推荐使用 make可以给内建容器开辟内存空间
- 适用于很多个元素
切片的参数
var s3 = make([]string, 0) // 切片使用make,第二个参数0表示长度.为0的切片,没有元素容量也为0
fmt.Println(s3, len(s3), cap(s3))
结果
make定义切片2
1.切片参数
s4 := make([]string, 0, 5) //切片使用make,第2个参数0表示长度为0, 第三个参数表示容量为5
fmt.Println(s4, len(s4), cap(s4))
标签:容量,make,s0,切片,3week,fmt,s1
From: https://www.cnblogs.com/john5yang/p/17026410.html