在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的值为空结构体类型,空结构体不会占用内存,使用它来实现我们的函数空间复杂度是最低的。最后实现了切片去重的功能。