问答详情
源自:5-3 Go语言-切片的更多操作方法

第一个cap(slice5) 为啥是4

slice5不是[5,6]吗  那5在原数组里的索引就是4,然后数组长度是10  差值绝对值不就是6吗??

提问者:qq_記憶蔷薇_0 2020-09-19 17:45

个回答

  • codevv
    2020-12-20 12:28:46

    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

  • 萌_大大
    2020-11-24 20:50:36

    上限是8即最大扩展上限到下标8,下标8的9为上限不取,实际值为5,6,cap后扩展就是5,6,7,8

  • 青鲤
    2020-10-29 13:50:30

    slice5 := numbers4[4:6:8]

    这个切片有三个参数,第三个参数

    这第三个正整数被称为容量上界索引。它的意义在于可以把作为结果的切片值的容量设置得更小。换句话说,它可以限制我们通过这个切片值对其底层数组中的更多元素的访问。

    仔细理解下左边的说明.