golang 切片合并移除重复
要在 Golang 中合并切片并移除重复的元素,可以使用一个 map 来记录元素是否已经存在。然后遍历切片,将不重复的元素添加到结果切片中。
示例代码如下:
func mergeAndRemoveDuplicates(slices ...[]int) []int { resultMap := make(map[int]bool) var result []int for _, slice := range slices { for _, elem := range slice { if !resultMap[elem] { resultMap[elem] = true result = append(result, elem) } } } return result }
上面的代码定义了一个 mergeAndRemoveDuplicates 函数,它接受多个整数类型的切片作为参数,并返回合并后并移除重复元素的新切片。函数内部使用一个 resultMap 来记录元素是否已经存在,然后遍历每个切片中的元素,如果元素不在 resultMap 中,将其添加到结果切片 result 中,并将对应的键值对设为 true 表示元素已存在。最后返回结果切片。
使用示例如下:
s1 := []int{1, 2, 3} s2 := []int{2, 3, 4} s3 := []int{3, 4, 5} s := mergeAndRemoveDuplicates(s1, s2, s3) fmt.Println(s) // [1 2 3 4 5]
在上面的示例中,我们首先定义了三个整数类型的切片 s1、s2 和 s3,然后调用 mergeAndRemoveDuplicates 函数,将这三个切片作为参数传入,得到了合并并移除重复元素后的新切片 [1 2 3 4 5]。最后,我们打印出了新切片的内容。