特性
长度可变、 内容可变、 引用类型、 底层基于数组
定义
var s1 []int // 长度、容量为0的切片,零值 var s2 = []int{} // 长度、容量为0的切片,字面量定义 var s3 = []int{1, 3, 5} // 字面量定义,长度、容量都是3 var s4 = make([]int, 0) // 长度、容量为0的切片,make([]T, length) var s5 = make([]int, 3, 5) // 长度为3,容量为5,底层数组为长度为5,元素长度为3,所以显 示[0, 0, 0]
与数组不同,切片的cap和长度len不再相同。
内存模型
切片本质是对底层数组一个连续片段的引用。此片段可以是整个底层数组,也可以是由起始和终止索引 标识的一些项的子集。
在go的源码(https://github.com/golang/go/blob/master/src/runtime/slice.go)中可以看到切片是有结构体的,切片结构体的标头值有三个:
s := []int{1, 3, 5, 7} fmt.Printf("%v, %p, %p", s, &s, &s[0]) // &a是切片结构体的地址,&a[0]是底层数组的地址。
标签:语言,int,切片,var,数组,go,长度 From: https://www.cnblogs.com/caibao666/p/17457712.html