go語言中切片的長度和容量的區別

2022-09-21 17:03:09 字數 2028 閱讀 7347

切片的長度,顯而易見的就是元素的個數,根據元素的個數進行返回具體的長度。

切片的長度,更像是乙個警戒值,如果長度與容量相等,就會進行容量的擴容,比如

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可以通...