课程
/后端开发
/Go
/Go语言第一课
slice5不是[5,6]吗 那5在原数组里的索引就是4,然后数组长度是10 差值绝对值不就是6吗??
2020-09-19
源自:Go语言第一课 5-3
正在回答
1、如果单纯的写slice5 := numbers4[4:6],切片slice5的底层数组是numbers4 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
那么cap就是:底层数组长度10 - 初始索引4 = 6 没错,取到的对应底层数组的索引值是 4 5,分别对应的值是: 5 6
但是切片操作符加上了第三个值slice5 := numbers4[4:6:8],代表的意思是:新切片容量索引值最大到8,但是取不到8,也就是说:现在取到的对应底层数组索引值为4 5 6 7,分别对应的值是:5 6 7 8
上限是8即最大扩展上限到下标8,下标8的9为上限不取,实际值为5,6,cap后扩展就是5,6,7,8
slice5 := numbers4[4:6:8]
这个切片有三个参数,第三个参数
这第三个正整数被称为容量上界索引。它的意义在于可以把作为结果的切片值的容量设置得更小。换句话说,它可以限制我们通过这个切片值对其底层数组中的更多元素的访问。
仔细理解下左边的说明.
举报
Go语言入门教程,编程之必备知识扩散,打好Go语言编程基础
1 回答slice5的容量为什么是4而不是8?
1 回答为什么同时append3个值后,cap会变成6呢? len = 5,cap = 6,slice = [0 1 2 3 4]
5 回答这个题里面的 len() 和 cap() 的区别是?
1 回答cap内建函数
2 回答第二个 func 里面的()为啥不用把 i 传进去呢