Go语言切片去重

在go语言中我们可以利用map中key的唯一性对切片进行去重操作:

package main

import "fmt"

func main() {
	s := []string{"张", "王", "李", "赵", "张", "王", "李", "赵"}
	fmt.Println(removeDuplicateElement(s))
}

func removeDuplicateElement(languages []string) []string {
	result := make([]string, 0, len(languages))
	temp := map[string]struct{}{}
	for _, item := range languages {
		if _, ok := temp[item]; !ok { //如果字典中找不到元素,ok=false,!ok为true,就往切片中append元素。
			temp[item] = struct{}{}
			result = append(result, item)
		}
	}
	return result
}

在removeDuplicateElement函数中,初始化了一个新的切片和map,map的键为字符串类型用来保存切片的值,map的值为空结构体类型,空结构体不会占用内存,使用它来实现我们的函数空间复杂度是最低的。最后实现了切片去重的功能。

猜你喜欢

转载自blog.csdn.net/random_w/article/details/104014430