slice5的容量為什么是4而不是8?
如題,對(duì)容量的計(jì)算還是搞得暈暈的。slice5的數(shù)值是5,6,不是應(yīng)該是底層數(shù)組第一個(gè)元素的索引值和長(zhǎng)度的差的絕對(duì)值?好像是5吧?
然后通過(guò)擴(kuò)展變成8?為什么看別人的答案做出來(lái)是4?暈了
如題,對(duì)容量的計(jì)算還是搞得暈暈的。slice5的數(shù)值是5,6,不是應(yīng)該是底層數(shù)組第一個(gè)元素的索引值和長(zhǎng)度的差的絕對(duì)值?好像是5吧?
然后通過(guò)擴(kuò)展變成8?為什么看別人的答案做出來(lái)是4?暈了
2019-09-19
舉報(bào)
2019-09-27
slice5 := numbers4[4:6:8]
首先len表示切片內(nèi)包含的元素個(gè)數(shù),顯然這里就是6-4=2
然后cap表示從切片第一個(gè)數(shù)開始,到底層數(shù)組的元素末尾(包含)的元素個(gè)數(shù),這里底層數(shù)組是:
var numbers4 = [...]int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10},長(zhǎng)度為10
slice5的第一個(gè)數(shù)的索引為4
也就是說(shuō),cap的值為10-4=6
但是由于slice5加上了容量上界索引8,所以其實(shí)cap應(yīng)該是8-4=4
等于說(shuō)是,加上容量上界索引后,底層數(shù)組其實(shí)是var numbers4 = [...]int{1, 2, 3, 4, 5, 6, 7, 8}
總結(jié):切片長(zhǎng)度=結(jié)束索引-起始索引,切片容量=底層數(shù)組長(zhǎng)度-起始索引
如有錯(cuò)誤,請(qǐng)指正。