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

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

如何在 Go 中手動為現有切片保留空間?

如何在 Go 中手動為現有切片保留空間?

Go
慕容森 2022-08-24 20:21:03
我正在將地圖的值追加到現有切片中。代碼是這樣的(是一個已經包含一些元素的切片):sfor key, value := range m {     s = append(s, value) }據我所知,Go中的切片在需要時會將其大小增加一倍。我可以讓它自身的容量增加一倍,但它會在一個循環中發生幾次,這可能對性能不利。在本例中,我知道所需的確切空間,即 。如何為切片“保留”空間,就像C++中那樣?我希望重新分配只發生一次。len(m)
查看完整描述

1 回答

?
喵喵時光機

TA貢獻1846條經驗 獲得超7個贊

您可以使用 make 為對象分配內存,例如(播放):

s := make([]string, len(m))
    for i, v := range m {
    s[i] = v
}

或者,您可以創建長度為零但容量足以容納 n 個值的切片。在這里,如果追加的項目數不超過容量(播放),則追加將永遠不需要分配新內存。

s := make([]string, 0, len(m))
    for _, v := range m {
    s = append(s, v)
}

如果您想更直觀地深入了解切片,這篇博客文章可能會有所幫助:

如果要手動放大包含元素的切片,則需要:

  • 創建所需容量(和長度)的新切片

  • 使用復制將元素復制到

游戲示例。


查看完整回答
反對 回復 2022-08-24
  • 1 回答
  • 0 關注
  • 99 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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