切片的長度,顯而易見的就是元素的個數,根據元素的個數進行返回具體的長度。
切片的長度,更像是乙個警戒值,如果長度與容量相等,就會進行容量的擴容,比如
des :=makwww.cppcns.come(int , 3 , 5)
程式設計客棧//此時,長度為3,容量為5,但是如果使用append(),
//切片長度會變為4,再次使用appendwww.cppcns.com()切片長度變為5。
//此時,切片長度與容量相同,此時,切片的容量增大變為cap = len*2
也就是通過乙個容量設警戒值,如果等於警戒值,就會自動將切片進行擴容
補充:go語言中切片的長度與容量的變化
在學習go語言的切片資訊時,發現切片的容量變化非常讓人摸不著頭腦,為了更記憶深刻就寫下了這篇,如有錯誤之處,請大家指正
package main
import (
"fmt"
)func main()
printslice(numbers)
//通過append給numbers增加資訊,如果當前切片的長度與容量相等,增加資訊的長度小於等於原來的長度,
那麼切片的長度變為相加之和,容量變為原來的2倍(一的第二行結果)
numbers = append(numbers, 10,5,6)
printslice(numbers)
//通過append給numbers增加資訊,如果當前切片a的長度與容量相等,增加資訊b的長度大於切片a原來的長度,
那麼切片的長度變為相加之和,容量變為:b長度+a長度+(b長度-a長度)%2(一的第三行結果)
numbers = append(numbers, 12,13,15,16,17,18,19,20,21,22,23)
printslice(numbers)
}func printslice(x int)
一:增加資訊的長度與當前長度和小於等於容量
func main()
printslice(numbers)
numbers = append(numbers, 10,5)
printslice(numbers)
//通過append給numbers增加資訊,如果當前切片的長度小於容量,增加資訊的長度與當前長度和小於等於容量,
那麼程式設計客棧numbers的長度變為相加之和,容量不變(二的第三行結果)
numbers = append(numbers, 11)
printslice(numbers)}二:
增加資訊b的長度與當前a的長度大於a容量並且小於a容量的2倍
func main()
printslice(numbers)
numbers = append(numbers, 10,5)
printslice(numbers)
//通過append給numbers增加資訊,如果當前切片a的長度小於容量,增加資訊b的長度與當前a的長度大於a容量並且小於a容量的2倍,
那麼numbers的長度變為相加之和,容量變為:a容量*2(三的第三www.cppcns.com行結果)
numbers = append(numbers, 11,12)
printslice(numbers)}三:
增加資訊b的長度與當前a的長度大於a容量的2倍
func main()
printslice(numbers)
numbers = append(numbers, 10,5)
printslice(numbers)
//通過append給numbers增加資訊,如果當前切片a的長度小於容量,增加資訊b的長度與當前a的長度大於a容量的2倍,
那麼numbers的長度變為相加之和c。容量變為:b長度+a長度+(b長度-a長度)%2(四的第三行結果)
numbers = append(numbers, 11,12,13,15,16,17,18,19,20)
printslice(numbers)}四:
本文標題: go語言中切片的長度和容量的區別
本文位址:
Go語言 切片長度和容量
package main import fmt func main printslice s slice the slice to give it zero length.s s 0 printslice s extend its length.fmt.println s 5 s s 4 print...
Go的切片 長度和容量
一 切片的宣告 切片可以看成是陣列的引用。在 go 中,每個陣列的大小是固定的,不能隨意改變大小,切片可以為陣列提供動態增長和縮小的需求,但其本身並不儲存任何資料。這是乙個陣列的宣告 var a 5 int 只指定長度,元素初始化為預設值0 var a 5 int 這是乙個切片的宣告 即宣告乙個沒有...
Go語言中切片slice的宣告與使用
go語言中的切片,是一種動態陣列,它是對陣列的擴充套件。2.1.1 宣告 個未指定 度的陣列來定義切 2.1.2 使 make 函式來建立切 package main import fmt func main 效果如下 圖 1 列印切片的長度 容量和資料元素 s int陣列 arr 5 int可以通...