3 回答

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

TA貢獻1829條經驗 獲得超9個贊
在中go
,數組按值傳遞;因此,要“通過引用傳遞”,您需要使用一個切片。不僅如此!引用Go的教程:
數組的大小是其類型的一部分;但是,可以聲明一個slice變量,可以將一個指針分配給具有相同元素類型的數組,或者(更常見的是)a [low:high]形式的slice表達式,該子表達式表示由low到索引的子數組。高1。切片看起來很像數組,但沒有顯式的大小([]與[10]),它們引用基礎(通常是匿名)規則數組的一部分。如果多個切片代表同一數組的各個部分,則它們可以共享數據。多個陣列永遠無法共享數據。
在Go程序中,切片比常規數組更常見。它們更加靈活,具有參考語義并且高效。他們缺乏的是對常規陣列的存儲布局的精確控制。如果要在結構中存儲數組的一百個元素,則應使用常規數組。
將數組傳遞給函數時,幾乎總是希望將形式參數聲明為切片。調用函數時,獲取數組的地址,然后Go將創建(有效地)切片引用并將其傳遞。
- 3 回答
- 0 關注
- 412 瀏覽
添加回答
舉報