最近,在做一個根據角色展示所屬的建築列表,因爲某個用戶可以同時有多個角色,而每個角色又可以分別管理不同的建築,所以在實際開發中出現,一個用戶登錄之後,會根據角色來展示一個建築列表,所以就會出現重複的建築出現,所以需要對結果數組進行去重.
func ArrayDup(items []vo.VoBuilding) []vo.VoBuilding {
result := make([]vo.VoBuilding, 0)
temp := map[int64]interface{}{}
for _, item := range items {
buildingId := item.BuildingId
value := temp[*buildingId]
temp[*buildingId] = item
if value == nil {
result = append(result, item)
}
}
return result
}
基本思路:
1.重新定義一個切片
2.定義一個map
3. 遍歷傳來的數組,從中獲取建築對應的id ,根據這個id去map裏面查,如果有值我們就不放到新切片中去,沒有 就放進去,這樣就可以達到去重的效果.