第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

更改函數(shù)中的全局切片

更改函數(shù)中的全局切片

Go
泛舟湖上清波郎朗 2023-04-17 16:21:36
我從來(lái)沒(méi)有使用過(guò) C/C++,所以我對(duì) go 中的指針有點(diǎn)困惑。問(wèn)題是:map[string][]InteractiveItems每個(gè)“房間”都有一個(gè),我想在函數(shù)中更改它的一部分。這里是:func (r *room) getItem(arg string) InteractiveItem {for i, val := range r.interactiveItems {    for _, item := range val {        if item.getName() == arg {            var idxToDelete int            for idx := range val {                if val[idx].getName() == arg {                    idxToDelete = idx                    break                }                if len(val) == 0 {                    delete(r.interactiveItems, i)                }            }            val = append(val[:idxToDelete], val[idxToDelete+1:]...)            return item        }    }}return nil很明顯,val函數(shù)內(nèi)部在變化,而房間的地圖卻沒(méi)有。我應(yīng)該如何處理刪除切片元素的指針?
查看完整描述

1 回答

?
嚕嚕噠

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超7個(gè)贊

這是因?yàn)?Go 中的一切都是按值傳遞的。

這對(duì)您的情況意味著,當(dāng)您遍歷地圖時(shí),每次迭代val都會(huì)為變量分配相應(yīng)切片值的副本。因此,在循環(huán)內(nèi)重新切片val值對(duì)地圖內(nèi)的原始切片沒(méi)有影響,因?yàn)橐粋€(gè)是另一個(gè)的副本,而不是對(duì)另一個(gè)的引用。

要更改地圖內(nèi)的切片,您可以將操作結(jié)果重新分配append給相應(yīng)的地圖鍵。

r.interactiveItems[i] = append(val[:idxToDelete], val[idxToDelete+1:]...)

請(qǐng)記住,當(dāng)復(fù)制切片時(shí),它不會(huì)復(fù)制切片指向的數(shù)據(jù),它只會(huì)復(fù)制切片的“描述符”。


查看完整回答
反對(duì) 回復(fù) 2023-04-17
  • 1 回答
  • 0 關(guān)注
  • 106 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)