課程
/后端開發
/Go
/Go語言第一課
如題,對容量的計算還是搞得暈暈的。slice5的數值是5,6,不是應該是底層數組第一個元素的索引值和長度的差的絕對值?好像是5吧?
然后通過擴展變成8?為什么看別人的答案做出來是4?暈了
2019-09-19
源自:Go語言第一課 5-3
正在回答
slice5 := numbers4[4:6:8]
首先len表示切片內包含的元素個數,顯然這里就是6-4=2
然后cap表示從切片第一個數開始,到底層數組的元素末尾(包含)的元素個數,這里底層數組是:
var numbers4 = [...]int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10},長度為10
slice5的第一個數的索引為4
也就是說,cap的值為10-4=6
但是由于slice5加上了容量上界索引8,所以其實cap應該是8-4=4
等于說是,加上容量上界索引后,底層數組其實是var numbers4 = [...]int{1, 2, 3, 4, 5, 6, 7, 8}
總結:切片長度=結束索引-起始索引,切片容量=底層數組長度-起始索引
如有錯誤,請指正。
舉報
Go語言入門教程,編程之必備知識擴散,打好Go語言編程基礎
4 回答第一個cap(slice5) 為啥是4
3 回答size := (8) 這個括號是什么語法?
2 回答不明白為什么最后的輸出是“Case A.”
1 回答環境變量Gobin是必須的嗎?
4 回答[]interface{}{byte(6), 'a', uint(10), int32(-4)} 這種表達是什么意思??
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2019-09-27
slice5 := numbers4[4:6:8]
首先len表示切片內包含的元素個數,顯然這里就是6-4=2
然后cap表示從切片第一個數開始,到底層數組的元素末尾(包含)的元素個數,這里底層數組是:
var numbers4 = [...]int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10},長度為10
slice5的第一個數的索引為4
也就是說,cap的值為10-4=6
但是由于slice5加上了容量上界索引8,所以其實cap應該是8-4=4
等于說是,加上容量上界索引后,底層數組其實是var numbers4 = [...]int{1, 2, 3, 4, 5, 6, 7, 8}
總結:切片長度=結束索引-起始索引,切片容量=底層數組長度-起始索引
如有錯誤,請指正。