亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Go中的切片類型有什么意義?

Go中的切片類型有什么意義?

Go
慕標5832272 2021-04-01 15:11:36
我已經讀過這篇文章,但仍然沒有完全意識到slice對付的優勢array。因此,我希望SO中的某人能比它更好地進行解釋,并且我相信您可以做到:)
查看完整描述

3 回答

?
12345678_0001

TA貢獻1802條經驗 獲得超5個贊

切片在數組上有很多用途,其他一些張貼者已經提到過。

  • 切片可以通過多種方式進行操作,例如指針。

    • 多個切片可以“指向”相同的基本數組

    • 切片是通過引用傳遞的,但是由于切片本身是指針,因此可以使用它來更有效地傳遞“數組”,因為不需要復制整個數組。

  • 但是,與指針不同,切片提供了額外的緩沖區安全性

    • 切片下溢和上溢會觸發異常,而不是使您不安全地訪問內存的其他區域。

    • 通過切片,您可以將訪問權限限制為僅訪問陣列的某些區域。這在處理子集時可能非常有用。

  • 切片的長度是在運行時動態確定的,這與數組的大小在編譯時是固定的不同。同樣,可以在運行時動態調整切片的大小。


查看完整回答
反對 回復 2021-04-26
?
PIPIONE

TA貢獻1829條經驗 獲得超9個贊

在中go,數組按值傳遞;因此,要“通過引用傳遞”,您需要使用一個切片。不僅如此!引用Go的教程:

數組的大小是其類型的一部分;但是,可以聲明一個slice變量,可以將一個指針分配給具有相同元素類型的數組,或者(更常見的是)a [low:high]形式的slice表達式,該子表達式表示由low到索引的子數組。高1。切片看起來很像數組,但沒有顯式的大小([]與[10]),它們引用基礎(通常是匿名)規則數組的一部分。如果多個切片代表同一數組的各個部分,則它們可以共享數據。多個陣列永遠無法共享數據。

在Go程序中,切片比常規數組更常見。它們更加靈活,具有參考語義并且高效。他們缺乏的是對常規陣列的存儲布局的精確控制。如果要在結構中存儲數組的一百個元素,則應使用常規數組。

將數組傳遞給函數時,幾乎總是希望將形式參數聲明為切片。調用函數時,獲取數組的地址,然后Go將創建(有效地)切片引用并將其傳遞。


查看完整回答
反對 回復 2021-04-26
?
智慧大石

TA貢獻1946條經驗 獲得超3個贊

除了已經給出的答案之外,還可以動態調整切片的大小,而不能調整數組的大小。也就是說,您只能使用常量來指定數組的大小,而可以使用變量來指定切片的大小。


查看完整回答
反對 回復 2021-04-26
  • 3 回答
  • 0 關注
  • 412 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號