Golang 去除重复值,无序排列

Golang 去除重复值,无序排列

Golang 中,如果想要删除重复值并且不考虑任何特定的顺序, 我们可以使用 Mapping ,在Go语言中,首先通过循环迭代,将数组中的每一个元素映射到布尔数据类型上. Go 提供一种内置映射类型,它实现了哈希表.

举个例子: 在此示例中,我们将字符串数据类型映射到整数数据类型上,即每个字符串值关联一个整数值.

Golang 去除重复值,无序排列

让我们逐行了解程序:

package main
import "fmt"
Go

包 fmt 实现了类似于C的 printf 和 scanf 的格式化输入输出

func unique(arr []int) []int {
Go

我们定义了一个函数来删除重复元素,参数为输入数组 ‘arr’,返回一种类型为 ‘[ ] int’ 的数组,其中定义了函数的类型.

result := []int{}
encountered := map[int]bool{}
Go

创建一个结果数组,它将存储所有唯一元素。’encountered’ 存储整数变量映射到布尔数据类型的值.

for v := range arr {
        encountered[arr[v]] = true
    }
Go

通过循环迭代,对于 ‘arr’ 中发生的每个元素,我们将其设置为 True。出现多次的元素具有相同的哈希值(或映射值).

for key, _ := range encountered {
        result = append(result, key)
    }
    return result
}
Go

然后我们迭代映射数组中存在的键值对。然后将它们附加到结果数组中,键元素中包含唯一的值.

func main() {
    array1 := []int{1, 5, 3, 4, 1, 6, 6, 6, 8, 7, 13, 5}
    fmt.Println(array1) 
    unique_items := unique(array1)
    fmt.Println(unique_items)
}
Go

这里我们在 main 函数中使用一些元素初始化了一个整数数组,其中包含重复项。我们打印初始数组和调用 unique() 函数后的更新数组。这样我们就得到了唯一的元素,忽略任何指定的顺序.

package main
 
import "fmt"
 
func unique(arr []int) []int {
    result := []int{}
    encountered := map[int]bool{}
 
    // Create a map of all unique elements.
    for v := range arr {
        encountered[arr[v]] = true
    }
 
    // Place all unique keys from
    // the map into the results array.
    for key, _ := range encountered {
        result = append(result, key)
    }
    return result
}
 
func main() {
    array1 := []int{2, 4, 5, 7, 2, 3, 4,
             7, 7, 12, 5, 11, 11, 1, 13}
    fmt.Println(array1)
    unique_items := unique(array1)
    fmt.Println(unique_items)
} 
Go

输出:

[2 4 5 7 2 3 4 7 7 12 5 11 11 1 13]
[11 1 132 4 5 7 3 12]
Go

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册