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

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

為什么我的地圖合并功能會(huì)合并所有內(nèi)容?

為什么我的地圖合并功能會(huì)合并所有內(nèi)容?

Go
有只小跳蛙 2022-05-18 17:05:24
我有一個(gè)相當(dāng)簡單的 Go 程序,它可以確定某人的日程安排是否有重疊。本質(zhì)上這就是它的作用:我們有 3 個(gè)事件,比如說雜貨店:            day   0  1  2  3  4  5     apple sale        [-----------]banana sale             [--------]pickle sale                [-------------]該代碼幾乎可以工作....但問題是,從邏輯上講,我將其編程為僅比較兩個(gè)事件。一次不是三個(gè)。然而,結(jié)果是這樣的:-------------| Events    |-------------Name: apple sale,Start:0End:4Name: banna sale,Start:2End:5Name: car sale,Start:3End:10-------------| Overlaps  |-------------Events: banna sale, car sale, apple sale,Start:3End:4Events: car sale, apple sale, banna sale,Start:3End:5Events: banna sale, apple sale,Start:2End:4不知何故,我認(rèn)為該mergeKeys()功能正在做一些奇怪的事情。有任何想法嗎?
查看完整描述

1 回答

?
慕尼黑的夜晚無繁華

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

好的。所以我弄清楚出了什么問題:


go中的地圖是通過引用傳遞的……有點(diǎn)。并不真地。

即使地圖前面沒有指針……它們是通過引用傳遞的……有點(diǎn)。確實(shí)不是,但您可以在這篇文章“go 中沒有按引用傳遞”和這篇文章“如果映射不是引用變量是什么”中了解更多相關(guān)信息。我將為您提供這段摘錄以澄清正在發(fā)生的事情:


映射值是指向 runtime.hmap 結(jié)構(gòu)的指針。


即使地圖不是通過引用而是通過值傳遞的……您傳遞給函數(shù)的原始地圖變量也會(huì)被修改。這意味著當(dāng)我在 mergeKeys 函數(shù)中更改左側(cè)地圖時(shí),我實(shí)際上也在更改 compareEvent.groups 地圖。


為了解決這個(gè)問題,我創(chuàng)建了一個(gè)垃圾地圖,我可以對其進(jìn)行變異并且不會(huì)產(chǎn)生任何后果:


if overlaping {


    trashMap := make(map[string]bool)

    for key, value := range comparisonEvent.groups {

        trashMap[key] = value

    }

    

    groups := mergeKeys(trashMap, eventItem.groups)


    switch overlapCase {

    

        case 1:

            overlaps = append( overlaps, event{eventItem.start, eventItem.end, groups} )


        case 2:

            overlaps = append( overlaps, event{comparisonEvent.start, comparisonEvent.end, groups} )


        case 3:

            overlaps = append( overlaps, event{eventItem.start, comparisonEvent.end, groups} )


        case 4:

            overlaps = append( overlaps, event{comparisonEvent.start, eventItem.end, groups} )

    }

}

在我接受這個(gè)答案之前,我仍然愿意討論和更好的解決方案。我希望這可以幫助那里的人!


查看完整回答
反對 回復(fù) 2022-05-18
  • 1 回答
  • 0 關(guān)注
  • 134 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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