Golang 从数组中删除重复的元素
在本教程中,我们将学习如何编写一个使用Go语言的程序来从数组中删除重复的元素。通过删除重复的条目,我们的意思是希望编写一个程序,该程序将删除多次重复出现的值。
使用外部函数从数组中删除重复的值
下面的代码演示了如何使用用户定义的函数从数组中删除重复的值。
步骤
步骤1 − 首先,我们需要导入 fmt 包。
步骤2 − 现在,创建一个名为 removeDuplicate() 的函数,该函数接受一个数组作为参数,并在删除所有重复项后返回一个数组。
步骤3 − 该函数使用一个循环来遍历数组。
步骤4 − 在这里,我们创建了一个使用整数作为键和布尔值作为值的映射,但默认情况下,映射变量存储的值为false。
步骤5 − 在每次数组迭代中,我们检查 map_var 的值,如果它是 false,则将该值取出并附加到上面创建的新数组中。
步骤6 − 重复此过程,直到检查所有数组的值,并返回形成的新数组。
步骤7 − 现在,我们需要启动主函数。
步骤8 − 初始化一个名为 arr 的整数数组,将值存储到其中,并在屏幕上打印数组。
步骤9 − 现在调用 removeDuplicate 函数,并将上面创建的数组作为参数传递给它。
步骤10 − 将得到的结果存储到名为 result 的数组中,并在屏幕上打印数组。
示例
package main
import "fmt"
// making a function named removeDuplicate()
func removeDuplicate(arr [8]int) []int {
map_var := map[int]bool{}
result := []int{}
for e := range arr {
if map_var[arr[e]] != true {
map_var[arr[e]] = true
result = append(result, arr[e])
}
}
return result
}
func main() {
arr := [8]int{1, 2, 2, 4, 4, 5, 7, 5}
fmt.Println("The unsorted array entered is:", arr)
result := removeDuplicate(arr)
fmt.Println("The array obtained after removing the duplicate values is:", result)
}
输出
The unsorted array entered is: [1 2 2 4 4 5 7 5]
The array obtained after removing the duplicate values is: [1 2 4 5 7]
使用循环从数组中删除重复元素
现在让我们看另一个示例,演示如何在不使用映射的情况下从数组中删除重复的条目。
步骤
第一步 − 导入允许我们在屏幕上打印任何内容的fmt包。
第二步 − 调用main()函数。
第三步 − 初始化并将元素存储在整数数组中,并将其打印在屏幕上。
第四步 − 使用for循环迭代数组,检查当前元素是否等于下一个元素。
第五步 − 如果两个元素相等,则使用for循环删除重复元素,并通过执行size–来减少数组的大小。
第六步 − 一旦遍历整个数组,使用fmt.Println()函数打印得到的新数组的元素在屏幕上。
示例
package main
import "fmt"
func main() {
arr := []int{1, 2, 2, 4, 4, 5, 7, 5}
fmt.Println("The unsorted array entered is:", arr)
size := len(arr)
for i := 0; i < size; i++ {
for j := i + 1; j < size; j++ {
if arr[i] == arr[j] {
for k := j; k < size-1; k++ {
arr[k] = arr[k+1]
}
size--
j--
}
}
}
fmt.Println("The elements of array obtained after removing the duplicate values is:")
for i := 0; i < size; i++ {
fmt.Println(arr[i])
}
}
输出
The unsorted array entered is: [1 2 2 4 4 5 7 5]
The elements of array obtained after removing the duplicate values is:
1
2
4
5
7
从字符串数组中使用Append()方法移除重复的值
在这个程序中,我们将看到如何使用Append()方法从字符串数组中移除重复的值
语法
func append(slice []Type, elems ...Type) []Type
在 golang 中,append 函数用于向数组切片中添加元素。它可以接受多个参数。第一个参数是我们希望追加的数组,其后是我们希望追加的值。然后该函数会返回具有添加值的新数组。
示例
package main
import (
"fmt"
"sort"
)
func removeDuplicate(strs []string) []string {
sort.Strings(strs)
for i := len(strs) - 1; i > 0; i-- {
if strs[i] == strs[i-1] {
strs = append(strs[:i], strs[i+1:]...)
}
}
return strs
}
func main() {
arr := []string{"a", "b", "b", "c", "b", "d"}
fmt.Println("The unsorted array entered is:", arr)
result := removeDuplicate(arr)
fmt.Println("The array obtained after removing the duplicate values is:", result)
}
输出
The unsorted array entered is: [a b b c b d]
The array obtained after removing the duplicate values is: [a b c d]
结论
我们成功地编译和执行了一个golang程序,该程序可以从数组中删除重复元素,并附有示例。