我有一片結(jié)構(gòu),每個(gè)結(jié)構(gòu)都有兩個(gè)字段。如果僅在第一個(gè)字段中存在重復(fù)值,我想從切片中刪除一個(gè)結(jié)構(gòu)。我嘗試在循環(huán)、映射和排序中使用循環(huán),但我無(wú)法弄清楚。如果兩個(gè)字段與另一個(gè)結(jié)構(gòu)具有相同的值,我最接近的是從切片中刪除一個(gè)結(jié)構(gòu),但如果第一個(gè)字段與切片中的另一個(gè)結(jié)構(gòu)具有相同的值,我需要?jiǎng)h除它。當(dāng)結(jié)構(gòu)中的所有字段都具有相同的值時(shí),網(wǎng)上有很多這樣的例子,但我沒(méi)有找到任何我正在描述的情況。我正在處理的實(shí)際程序要復(fù)雜得多,它需要我使用一片結(jié)構(gòu)。我在下面做了一個(gè)簡(jiǎn)化的例子,它觸及了問(wèn)題的核心。它輸出[{one 1} {one 2} {five 5}]所需的輸出是[{one 1} {five 5}]預(yù)先感謝您的幫助。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)}去游樂(lè)場(chǎng)鏈接https://play.golang.org/p/x8sNjW_mxrl
從結(jié)構(gòu)片段中刪除具有重復(fù)字段值的結(jié)構(gòu)
滄海一幻覺(jué)
2022-07-11 17:13:16