有沒有寫在旅途中通用陣列/片重複數據刪除的方式,爲[]int
我們可以有這樣的事情(從http://rosettacode.org/wiki/Remove_duplicate_elements#Go):我們可以寫出一個通用陣列/片重複數據刪除嗎?
func uniq(list []int) []int {
unique_set := make(map[int] bool, len(list))
for _, x := range list {
unique_set[x] = true
}
result := make([]int, len(unique_set))
i := 0
for x := range unique_set {
result[i] = x
i++
}
return result
}
但是,有沒有辦法把它擴大到支持任何陣列?與像簽名:
func deduplicate(a []interface{}) []interface{}
我知道,你可以寫一個函數與該簽名,但你不能真正使用它在[]int
,你需要創建一個[]interface{}
把一切從[]int
進去,把它傳遞給函數,然後把它放回[]interface{}
並通過這個新的陣列,並把所有東西放在一個新的[]int
。
我的問題是,有沒有更好的方法來做到這一點?
並非Go中的所有類型都支持相等性,所以它不能用於任何類型的切片。 – newacct