最近在写一个小项目的时候需要将数据去重,搜了搜文档发现好像没有去重的实现。就是类似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)
}

运行结果如下