Golang 去除重复值,无序排列
在 Golang 中,如果想要删除重复值并且不考虑任何特定的顺序, 我们可以使用 Mapping ,在Go语言中,首先通过循环迭代,将数组中的每一个元素映射到布尔数据类型上. Go 提供一种内置映射类型,它实现了哈希表.
举个例子: 在此示例中,我们将字符串数据类型映射到整数数据类型上,即每个字符串值关联一个整数值.
让我们逐行了解程序:
package main
import "fmt"
包 fmt 实现了类似于C的 printf 和 scanf 的格式化输入输出
func unique(arr []int) []int {
我们定义了一个函数来删除重复元素,参数为输入数组 ‘arr’,返回一种类型为 ‘[ ] int’ 的数组,其中定义了函数的类型.
result := []int{}
encountered := map[int]bool{}
创建一个结果数组,它将存储所有唯一元素。’encountered’ 存储整数变量映射到布尔数据类型的值.
for v := range arr {
encountered[arr[v]] = true
}
通过循环迭代,对于 ‘arr’ 中发生的每个元素,我们将其设置为 True。出现多次的元素具有相同的哈希值(或映射值).
for key, _ := range encountered {
result = append(result, key)
}
return result
}
然后我们迭代映射数组中存在的键值对。然后将它们附加到结果数组中,键元素中包含唯一的值.
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)
}
这里我们在 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)
}
输出:
[2 4 5 7 2 3 4 7 7 12 5 11 11 1 13]
[11 1 132 4 5 7 3 12]