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”
// 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]