Golang 如何从Slice中删除重复值

Golang 如何从Slice中删除重复值

数组是一种数据结构。同样,在Golang中我们有slice,它比数组更灵活、强大、轻量级和方便。由于slice比数组更灵活,因此它的灵活性是根据其大小来确定的。就像数组一样,它有索引值和长度,但其大小并不固定。当我们声明一个slice时,我们不指定其大小。

语法:

[]mySlice;[]mySlice{};[]mySlice{input1, input2, .........input n}
Go

此外,slice和数组彼此相连,在slice中,有对底层数组的引用。在slice中,我们可以存储重复的元素。
例子: 这里,我们将看到如何从slice中删除重复的元素。我们定义了一个函数,我们传递了slice值,并使用映射函数来检查重复项并将其删除。

// Golang程序从Slice中删除重复值
package main

import (
    "fmt"
)

func removeDuplicateValues(intSlice []int) []int {
    keys := make(map[int]bool)
    list := []int{}

    //如果键(slice的值)不等于
    //新的slice(列表)中已有的值
    //然后我们添加它。否则,我们跳到另一个元素。
    for _, entry := range intSlice {
        if _, value := keys[entry]; !value {
            keys[entry] = true
            list = append(list, entry)
        }
    }
    return list
}

func main() {

    //为slice分配值
    intSliceValues := []int{1,2,3,4,5,2,3,5,7,9,6,7}

    //打印slice的原始值
    fmt.Println(intSliceValues)

    //调用函数,其中我们
    //去掉重复
    removeDuplicateValuesSlice := removeDuplicateValues(intSliceValues)

    //打印过滤后的slice
    //无重复
    fmt.Println(removeDuplicateValuesSlice)
} 
Go

输出:

[1 2 3 4 5 2 3 5 7 9 6 7]
[1 2 3 4 5 7 9 6]
Go

解释:

  • 从主函数中,我们声明了一个slice。同时我们打印slice的原始值。
  • 我们定义了一个函数,我们传递了slice原始的值并检查重复值。
  • 检查重复的逻辑: 为此,我们定义了另一个slice,并通过检查新slice中是否已存在值来分配第一个值。它返回一个没有重复的slice。
  • 我们从主函数中调用 removeDuplicateValues 函数,其中从函数返回的slice被打印出来。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册