📜  从数组中删除重复元素的 Golang 程序

📅  最后修改于: 2021-10-24 14:05:26             🧑  作者: Mango

Golang或 Go 编程语言中的数组与其他编程语言非常相似。在程序中,有时我们需要存储一组相同类型的数据,比如学生成绩列表。这种类型的集合使用数组存储在程序中。数组是一个固定长度的序列,用于在内存中存储同构元素。由于它们的固定长度数组不像 Go 语言中的 Slice 那样受欢迎。

在数组中,您可以在其中存储零个或多个零个元素。数组的元素通过使用 [] 索引运算符及其从零开始的位置进行索引,这意味着第一个元素的索引是 array[0],最后一个元素的索引是 array[len(array)-1] .

要从数组中删除重复元素,我们将 int 项映射到布尔数据类型,并在元素第一次出现时将其设置为 true,从而将其附加到另一个数组以获取删除的重复元素数组

Input : [7, 3, 6, 1, 8, 1, 1, 3, 4, 5, 12]
Output : [7, 6, 4, 8, 5, 12]
The elements present more than once, the duplicates are removed

让我们看看 Golang 程序并理解代码:

import "fmt"

包 fmt 使用类似于 C 的 printf 和 scanf 的函数实现格式化的 I/O。

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

我们定义的函数定义用于删除带有参数的重复元素作为输入数组 ‘arr’ 并返回类型为 ‘[ ]int’ 的数组

occured := map[int]bool{}
result:=[]int{}

在这里,我们创建了一个 map 变量发生,它将int数据类型映射到数组中存在的每个元素的boolean数据类型。我们创建和数组“result”,它将存储给定项目中的唯一元素并将其返回给主函数

for e:= range arr {
     if occured[arr[e]] != true {
     occured[arr[e]] = true
         result = append(result, arr[e])
     }
  }
return result

我们在 for 循环中遍历数组并检查映射变量occcured[arr[(loop variable)]]是否为真。最初,每个索引的映射变量都不是真的。因此,当第一次遇到该元素时,我们将值更改为true并将其附加到数组结果中。下一次找到重复元素时,它会检查条件,如果发生 [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)
}

在函数main array1 中用值初始化,然后我们打印初始数组并调用unique函数来执行上述函数,然后返回一个数组,我们将其打印为“unique_items”

Go
// Golang Program that Removes Duplicate
// Elements From the Array
package main
  
import "fmt"
  
func unique(arr []int) []int {
    occured := map[int]bool{}
    result := []int{}
    for e := range arr {
      
        // check if already the mapped
        // variable is set to true or not
        if occured[arr[e]] != true {
            occured[arr[e]] = true
              
            // Append to result slice.
            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]