在Golang 中,当我们想要删除不考虑任何特定顺序作为初始值的重复项时,我们使用 Go lang 中的Mapping 。首先遍历循环并将数组中的每个元素映射到布尔数据类型。 Go 提供了一个内置的映射类型来实现哈希表。
示例:在此示例中,我们将字符串数据类型映射到 int 数据类型,即每个字符串值都与整数值相关联
让我们一行一行地理解程序:
package main
import "fmt"
包 fmt 使用类似于 C 的 printf 和 scanf 的函数实现格式化的 I/O。
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()函数后打印初始数组和更新后的数组。这给了我们独特的元素,忽略任何特定的顺序。
Go
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 13 2 4 5 7 3 12]