1. 程式人生 > 其它 >Golang語言社群-【基礎知識】切片

Golang語言社群-【基礎知識】切片

Go程式設計切片是一種抽象了Go程式設計陣列。由於Go程式設計陣列允許您定義的變數,可容納同類的幾個資料項型別,但它不提供任何內建的方法來動態地增加它的大小或得到一個子陣列自身。切片覆蓋這一限制。它提供了陣列所需的多種效用函式,被廣泛應用在Go程式設計。

定義切片

要定義一個切片,你可以宣告它作為一個數組時,不需要指定大小或使用make函式來建立。

var numbers []int /* a slice of unspecified size */
/* numbers == []int{0,0,0,0,0}*/
numbers = make([]int,5,5) /* a slice of length 5 and capacity 5*/

len() 和 cap() 函式

由於切片是一種抽象陣列。它實際上使用陣列作為底層structure.len()函式返回的元素呈現在cap()函式返回切片作為多少元素,它可以容納的容量的切片。以下為例子來解釋片的使用:

當上述程式碼被編譯和執行時,它產生了以下結果:

len=3 cap=5 slice=[0 0 0]

Nil 切片

如果一個切片,沒有輸入預設宣告,它被初始化為為nil。其長度和容量都為零。下面是一個例子:

子切片

切片允許設定下限和上限進行指定,以得到它使用的子片[下限:上限]。下面是一個例子:

當上述程式碼被編譯和執行時,它產生了以下結果:

len=9 cap=9 slice=[0 1 2 3 4 5 6 7 8]
numbers == [0 1 2 3 4 5 6 7 8]
numbers[1:4] == [1 2 3]
numbers[:3] == [0 1 2]
numbers[4:] == [4 5 6 7 8]
len=0 cap=5 slice=[]
len=2 cap=9 slice=[0 1]
len=3 cap=7 slice=[2 3 4]

append() 和 copy() 函式

Slice允許增加使用切片的append()函式。使用copy()函式,源切片的內容複製到目標切片。下面是一個例子:

當上述程式碼被編譯和執行時,它產生了以下結果:

len=0 cap=0 slice=[]
len=1 cap=2 slice=[0]
len=2 cap=2 slice=[0 1]
len=5 cap=8 slice=[0 1 2 3 4]
len=5 cap=16 slice=[0 1 2 3 4]