golang slice去重

Posted walkerwang731

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了golang slice去重相关的知识,希望对你有一定的参考价值。

golang内没有类似python中集合的数据结构,所以去重这样的运算只能自己造轮子了。

随手写了两个示例,一个是string类型的,一个是int类型的

package main

import "fmt"

func main()  {
	s1 := []string{"111", "aaa", "bbb", "ccc", "aaa", "ddd", "ccc"}
	ret := RemoveReplicaSliceString(s1)
	fmt.Println(ret)
	s2 := []int{1 ,2 ,5, 2, 3}
	ret2 := RemoveReplicaSliceInt(s2)
	fmt.Println(ret2)
}


func RemoveReplicaSliceString(slc []string) []string {
	/*
	slice(string类型)元素去重
	*/
	result := make([]string, 0)
	tempMap := make(map[string]bool, len(slc))
	for _, e := range slc{
		if tempMap[e] == false{
			tempMap[e] = true
			result = append(result, e)
		}
	}
	return result
}

func RemoveReplicaSliceInt(slc []int) []int {
	/*
	slice(int类型)元素去重
	*/
	result := make([]int, 0)
	tempMap := make(map[int]bool, len(slc))
	for _, e := range slc{
		if tempMap[e] == false{
			tempMap[e] = true
			result = append(result, e)
		}
	}
	return result
}
输出:
[111 aaa bbb ccc ddd]
[1 2 5 3]

以上是关于golang slice去重的主要内容,如果未能解决你的问题,请参考以下文章

golang删除数组某个元素

golang 中 怎么实现slice 删除指定的元素

由浅入深聊聊Golang的slice

golang - 如何获得错误“已评估但未使用”

golang goroutine例子[golang并发代码片段]

golang的slice你真的搞懂了吗