最近在写一个小项目的时候需要将数据去重,搜了搜文档发现好像没有去重的实现。就是类似C++的unique
所以只能手动实现一下了,在此记录一下。
思路很简单就是利用内置的map逐个判断就好了,最后我还排了个序,返回一个去重并且排过序的切片
func unique_sort(slice []int) []int {
res := make([]int, 0)
mp := make(map[int]bool, len(slice))
for _, e := range slice {
if mp[e] == false {
mp[e] = true
res = append(res, e)
}
}
sort.Slice(res, func(i, j int) bool {
return res[i] < res[j]
})
return res
}
func main() {
a := []int{1, 1, 2, 4, 5, 3, 3, 1}
res := unique_sort(a)
fmt.Println(res)
}
运行结果如下