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