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

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

從結構片段中刪除具有重復字段值的結構

從結構片段中刪除具有重復字段值的結構

Go
滄海一幻覺 2022-07-11 17:13:16
  我有一片結構,每個結構都有兩個字段。如果僅在第一個字段中存在重復值,我想從切片中刪除一個結構。我嘗試在循環、映射和排序中使用循環,但我無法弄清楚。如果兩個字段與另一個結構具有相同的值,我最接近的是從切片中刪除一個結構,但如果第一個字段與切片中的另一個結構具有相同的值,我需要刪除它。當結構中的所有字段都具有相同的值時,網上有很多這樣的例子,但我沒有找到任何我正在描述的情況。我正在處理的實際程序要復雜得多,它需要我使用一片結構。我在下面做了一個簡化的例子,它觸及了問題的核心。它輸出[{one 1} {one 2} {five 5}]所需的輸出是[{one 1} {five 5}]預先感謝您的幫助。import "fmt"type myKey struct {    key string    num int}type myKeysList []myKeyfunc remDupKeys(m myKeysList) myKeysList {    keys := make(map[myKey]bool)    list := myKeysList{}    for _, entry := range m {        if _, value := keys[entry]; !value {            keys[entry] = true            list = append(list, entry)        }    }    return list}func main() {    one := myKey{"one", 1}    two := myKey{"one", 1}    three := myKey{"one", 2}    four := myKey{"one", 1}    five := myKey{"five", 5}    myKeysList := myKeysList{one, two, three, four, five}    fmt.Println(myKeysList)    uList := remDupKeys(myKeysList)    fmt.Println(uList)}去游樂場鏈接https://play.golang.org/p/x8sNjW_mxrl
查看完整描述

1 回答

?
婷婷同學_

TA貢獻1844條經驗 獲得超8個贊

問題中的基本思想是正確的:在地圖中記錄訪問過的值并跳過地圖中已經存在的值。


要基于結構中的單個字段刪除重復項,請使用該字段作為映射鍵:


func remDupKeys(m myKeysList) myKeysList {

    keys := make(map[string]bool)

    list := myKeysList{}

    for _, entry := range m {

        if _, ok := keys[entry.key]; !ok {

            keys[entry.key] = true

            list = append(list, entry)

        }

    }

    return list

}


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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