go切片窺探

2021-10-04 07:29:54 字數 658 閱讀 8210

切片(slice)是對陣列乙個連續片段的引用(該陣列我們稱之為相關陣列,通常是匿名的),所以切片是乙個引用型別(因此更類似於c/c++中的陣列型別,或者python中的list型別)。這個片段可以是整個陣列,或者是由起始和終止索引標識的一些項的子集。需要注意的是,終止索引標識的項不包括在切片內。切片提供了乙個相關陣列的動態視窗。

切片是可索引的,並且可以由len()函式獲取長度。

切片提供了計算容量的函式cap(),可以測量切片最長可以達到多少

它等於切片的長度 + 陣列除切片之外的長度
如果 s 是乙個切片, cap(s) 就是從 s[0] 到陣列末尾的陣列長度。

切片的長度永遠不會超過它的容量, 所以對於 切片 s 來說該不等式永遠成立:

0 <= len(s) <= cap(s)
多個切片如果表示同乙個陣列的片段,它們可以共享資料;因此乙個切片和相關陣列的其他切片是共享儲存的, 相反,不同的陣列總是代表不同的儲存。 陣列實際上是切片的構建塊。

因為切片是引用, 所以它們不需要使用額外的記憶體並且比使用陣列更有效率, 所以在 go **中 切片比陣列更常用。

go陣列 切片

陣列 陣列指標 fmt.println 陣列指標 i int var p 10 int i fmt.println p fmt.println p x,y 1,2 j int fmt.println j k 2 int l 2 int fmt.println k l 指向陣列的指標 m new 5 ...

Go語言切片

go語言切片 go語言切片是對陣列的抽象 go 陣列的長度不可改變,在特定場景中這樣的集合就不太適用,go中提供了一種靈活,功能強悍的內建型別切片 動態陣列 與陣列相比切片的長度是不固定的,可以追加元素,在追加時可能使切片的容量增大。宣告乙個未指定大小的陣列來定義切片 var identifier ...

go語言 切片

一 概述 low 陣列下標的起點 high 陣列下標的結束點 不包括此點 arr low arr high len 長度 high low cap 容量 max low 二 切片的長度與容量 package main import fmt func main slice arr 0 3 5 fmt....