Golang 从数组中删除重复元素
Golang 中的数组 或 Go 编程语言与其它编程语言非常相似。在程序中,有时我们需要存储一组相同类型的数据,例如学生成绩单列表。这种类型的集合使用数组在程序中进行存储。数组是一系列固定长度的顺序,用于在内存中存储同类元素。由于它们的固定长度,数组不像 Go 语言中的切片一样受欢迎。
在数组中,您可以存储零个或更多个元素。通过使用带有零基位置的 [] 索引操作符对数组的元素进行索引,这意味着第一个元素的索引是 array[0],最后一个元素的索引是 array[len(array)-1]。
为了从数组中删除重复元素,我们将 int 类型的项目映射到布尔类型数据,并将其设置为第一个元素的 true,然后将其附加到另一个数组中,以获得已删除重复元素的数组。
输入: [7,3,6,1,8,1,1,3,4,5,12]
输出: [7,6,4,8,5,12]
存在多次的元素,已删除重复元素
让我们看看 Golang 程序,并理解其代码:
import "fmt"
fmt 包实现了类似于 C 的 printf 和 scanf 的格式化 I / O 函数。
func unique(arr []int) []int {
这是我们定义的函数定义,其参数为输入数组 “arr”,返回类型为 “[ ]int” 类型的数组,用于删除重复的元素。
occurred := map[int]bool{}
result:=[]int{}
在这里,我们创建了一个 map 变量 occurred,该变量将每个元素的 int 数据类型映射到 boolean 数据类型。我们创建了一个数组 ‘result’,它将存储给定项的唯一元素,并将其返回给主功能。
for e:= range arr {
if occurred[arr[e]] != true {
occurred[arr[e]] = true
result = append(result, arr[e])
}
}
return result
我们通过 for 循环迭代数组并检查映射变量 occurred [arr [(循环变量)]] 是 true 还是 false。最开始时,每个索引的映射变量都不为 true。因此,当首次遇到元素时,我们将其更改为 true,并将其附加到数组 result 中。下一次找到重复元素时,将检查条件是否为true occurred [arr[e]] ,是因为之前遇到了,因此不会执行该块并且重复元素不会被附加到结果数组中。最后,我们返回数组。
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)
}
在主函数中,我们使用值初始化 array1,然后打印初始数组并调用函数 unique 以执行上述函数,并返回一个数组,我们将其作为 ‘unique_items’ 打印出来。
// Golang程序,从数组中移除重复元素
package main
import "fmt"
func unique(arr []int) []int {
occurred := map[int]bool{}
result := []int{}
for e := range arr {
// 检查是否已将映射变量设置为true
if occurred[arr[e]] != true {
occurred[arr[e]] = true
// 添加到结果切片。
result = append(result, arr[e])
}
}
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)
}
输出:
[1 5 3 4 1 6 6 6 8 7 13 5]
[1 5 3 4 6 8 7 13]