1 回答

TA貢獻1784條經(jīng)驗 獲得超9個贊
按唯一且可排序的鍵對舊成員和新成員進行排序??雌饋?SteamID 可能適合此目的。通過比較鍵,遍歷兩個切片檢查添加和刪除的元素。
func diff(old []*member, new []*member) {
sort.Sort(bySteamID(old))
sort.Sort(bySteamID(new))
i, j := 0, 0
for i < len(old) && j < len(new) {
switch {
case old[i].SteamID < new[j].SteamID:
fmt.Println(" delete", old[i].SteamID)
i++
case old[i].SteamID > new[j].SteamID:
fmt.Println(" add", new[j].SteamID)
j++
default:
i++
j++
}
}
for i < len(old) {
fmt.Println(" delete", old[i].SteamID)
i++
}
for j < len(new) {
fmt.Println(" add", new[j].SteamID)
j++
}
}
playground example
- 1 回答
- 0 關(guān)注
- 216 瀏覽
添加回答
舉報