在使用Go语言的时候,碰到了需要对数组进行去重操作的问题。Java语言有Set集合这个数据结构,可以很方便的将数组转为集合,但是Go语言没有Set,如果仅仅是因为去重操作就手动实现一个Set太繁琐了。可以根据Go语言中的map的特性来简单实现一下,改进了一下,之前的有问题,感谢指正;使用了泛型,需要go1.18以上版本。如果你的代码中类型比较明确,可以把泛型换掉。
func main() {
list := []string {"hello", "hello", "hello", "hello", "hello", "world"}
list = removeRepeatElement(list)
fmt.Println(list)
}
func removeRepeatElement[T comparable](list []T) []T {
// 创建一个临时map用来存储数组元素
temp := make(map[T]struct{})
index := 0
// 将元素放入map中
for _, v := range list {
temp[v] = struct{}{}
}
tempList := make([]T, len(temp))
for key := range temp {
tempList[index] = key
index++
}
return tempList
}
// 输出:
// [hello]
这个是对字符串数组去重操作。可以根据需要的类型稍作修改即可。需要注意的是只支持可以作为map键的结构进行去重!