5 切片再切片 除了基于数组得到切片,我们还可以通过切片来得到切片。
1 2 3 4 5 6 7 8 9 #输出
1 2 3 注意 对切片进行再切片时,索引不能超过原数组的长度,否则会出现索引越界的错误。 #6 使用make()构造切片我们上面都是基于数组来创建的切片,如果需要动态的创建一个切片,我们就需要使用内置的make()函数, 格式如下 make([]T, size, cap)
#举例如下
1 2 3 4 5 6 上面代码中a的内部存储空间已经分配了10个,但实际上只用了2个。 容量并不会影响当前元素的个数,所以len(a)返回2,cap(a)则返回该切片的容量。 #make初始化和普通声明切片的区别
1 2 3 4 5 6 7 #7 切片的本质切片本质 切片的本质就是对底层数组的封装,它包含了三个信息:底层数组的指针、切片的长度(len)和切片的容量(cap)。 举个例子,现在有一个数组a := [8]int{0, 1, 2, 3, 4, 5, 6, 7},切片s1 := a[:5],相应示意图如下。 #切片s2 := a[3:6],相应示意图如下:#切片不能直接比较切片之间是不能比较的,我们不能使用==操作符来判断两个切片是否含有全部相等元素。 切片唯一合法的比较操作是和
1 2 3 注意 所以要判断一个切片是否是空的,要是用len(s) == 0来判断,不应该使用s == nil来判断。 # |
Archiver|手机版|小黑屋|小白教程 ( 粤ICP备20019910号 )
GMT+8, 2025-5-1 05:18 , Processed in 0.014367 second(s), 18 queries .
Powered by Discuz! X3.4
© 2001-2017 Comsenz Inc. Template By 【未来科技】【 www.wekei.cn 】