3 回答

TA貢獻(xiàn)1802條經(jīng)驗 獲得超5個贊
切片在數(shù)組上有很多用途,其他一些張貼者已經(jīng)提到過。
切片可以通過多種方式進(jìn)行操作,例如指針。
多個切片可以“指向”相同的基本數(shù)組
切片是通過引用傳遞的,但是由于切片本身是指針,因此可以使用它來更有效地傳遞“數(shù)組”,因為不需要復(fù)制整個數(shù)組。
但是,與指針不同,切片提供了額外的緩沖區(qū)安全性
切片下溢和上溢會觸發(fā)異常,而不是使您不安全地訪問內(nèi)存的其他區(qū)域。
通過切片,您可以將訪問權(quán)限限制為僅訪問陣列的某些區(qū)域。這在處理子集時可能非常有用。
切片的長度是在運(yùn)行時動態(tài)確定的,這與數(shù)組的大小在編譯時是固定的不同。同樣,可以在運(yùn)行時動態(tài)調(diào)整切片的大小。

TA貢獻(xiàn)1829條經(jīng)驗 獲得超9個贊
在中go
,數(shù)組按值傳遞;因此,要“通過引用傳遞”,您需要使用一個切片。不僅如此!引用Go的教程:
數(shù)組的大小是其類型的一部分;但是,可以聲明一個slice變量,可以將一個指針分配給具有相同元素類型的數(shù)組,或者(更常見的是)a [low:high]形式的slice表達(dá)式,該子表達(dá)式表示由low到索引的子數(shù)組。高1。切片看起來很像數(shù)組,但沒有顯式的大小([]與[10]),它們引用基礎(chǔ)(通常是匿名)規(guī)則數(shù)組的一部分。如果多個切片代表同一數(shù)組的各個部分,則它們可以共享數(shù)據(jù)。多個陣列永遠(yuǎn)無法共享數(shù)據(jù)。
在Go程序中,切片比常規(guī)數(shù)組更常見。它們更加靈活,具有參考語義并且高效。他們?nèi)狈Φ氖菍ΤR?guī)陣列的存儲布局的精確控制。如果要在結(jié)構(gòu)中存儲數(shù)組的一百個元素,則應(yīng)使用常規(guī)數(shù)組。
將數(shù)組傳遞給函數(shù)時,幾乎總是希望將形式參數(shù)聲明為切片。調(diào)用函數(shù)時,獲取數(shù)組的地址,然后Go將創(chuàng)建(有效地)切片引用并將其傳遞。

TA貢獻(xiàn)1946條經(jīng)驗 獲得超3個贊
除了已經(jīng)給出的答案之外,還可以動態(tài)調(diào)整切片的大小,而不能調(diào)整數(shù)組的大小。也就是說,您只能使用常量來指定數(shù)組的大小,而可以使用變量來指定切片的大小。
- 3 回答
- 0 關(guān)注
- 413 瀏覽
添加回答
舉報