有没有办法在 go 中编写通用数组/切片重复数据删除,因为[]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
放入其中,将其传递给函数然后将其取回并将其放入 a[]interface{}
和遍历这个新数组并将所有内容放入一个新的[]int
.
我的问题是,有没有更好的方法来做到这一点?