Go的 Slice(切片)類型提供了一種方便有效的方法來處理類型化數(shù)據(jù)序列。
slice類似于其他語言中的數(shù)組,但具有一些不尋常的屬性。 (推薦學(xué)習(xí):go)
Slices
數(shù)組有它們的位置,但是它們有點不靈活,所以你不會在Go代碼中經(jīng)??吹剿鼈儭?然而,Slice無處不在。 它們以陣列為基礎(chǔ),提供強大的功能和便利性。
Slice的類型規(guī)范是[] T,其中T是Slice元素的類型。 與數(shù)組類型不同,Slice類型沒有指定的長度。
Slice文字聲明就像數(shù)組文字一樣,除了省略元素數(shù):
letters := []string{"a", "b", "c", "d"}
可以使用名為make的內(nèi)置函數(shù)創(chuàng)建切片,該函數(shù)具有如下定義,
func make([]T, len, cap) []T
其中T代表要創(chuàng)建的切片的元素類型。 make函數(shù)采用類型,長度和可選容量。 調(diào)用時,make會分配一個數(shù)組并返回一個引用該數(shù)組的切片。
var s []byte s = make([]byte, 5, 5) // s == []byte{0, 0, 0, 0, 0}
省略capacity參數(shù)時,默認(rèn)為指定的長度。 這是相同代碼的更簡潔版本:
s := make([]byte, 5)
可以使用內(nèi)置的len和cap函數(shù)檢查切片的長度和容量。
len(s) == 5 cap(s) == 5