golang 切片合并移除重复

作者: adm 分类: 未分类 发布时间: 2024-01-11

要在 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]。最后,我们打印出了新切片的内容。

如果觉得我的文章对您有用,请随意赞赏。您的支持将鼓励我继续创作!