Golang 程序从数组中删除重复元素
在本教程中,我们将编写一个 Go 语言程序来从数组中删除重复元素。通过删除重复的条目,我们的意思是我们希望删除多次重复的值。在本教程中,我们使用整数数组和字符串数组的示例。
方法 1:使用外部函数从数组中删除重复值
以下代码说明了如何使用用户定义的函数从整数数组中删除重复值。
算法
步骤 1 − 首先,我们需要导入 fmt 包。
步骤 2 − 现在,创建一个名为 removeDuplicate() 的函数,该函数接受一个数组作为参数,并在删除所有重复条目后返回一个数组。
步骤 3 − 此函数使用 for 循环遍历数组。
步骤 4 − 在这里,我们创建了一个映射,其键为整数,值是布尔值,默认情况下,map_var 存储的值为 false。
步骤 5 - 在数组的每次迭代中,我们都会检查 map_var 的值,如果它为假,那么我们必须获取该值并将其附加到上面创建的新数组中。
步骤 6 - 重复此过程,直到检查完所有数组值,然后返回刚刚形成的新数组。
步骤 7 - 现在,我们需要启动主函数。
步骤 8 - 初始化一个整数数组 arr,将值存储到其中,并在屏幕上打印该数组。
步骤 9 - 现在通过将上面创建的数组作为参数传递给 removeDuplicate 函数来调用它。
步骤 10 - 将获得的结果存储在名为 result 的数组中,并在屏幕上打印该数组。
示例
Golang 程序使用外部函数从数组中删除重复值。
package main import "fmt" // 创建一个名为 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("输入的未排序数组为:", arr) result := removeDuplicate(arr) fmt.Println("删除重复值后得到的数组为:", result) }
输出
输入的未排序数组为: [1 2 2 4 4 5 7 5] 删除重复值后得到的数组为: [1 2 4 5 7]
方法 2:不使用映射从数组中删除重复元素
现在让我们看另一个示例,了解如何不使用映射从数组中删除重复条目。
算法
步骤 1 - 导入 fmt 包,该包允许我们在屏幕上打印任何内容。
步骤 2 - 调用 main() 函数。
步骤 3 - 初始化并将元素存储在整数数组中,然后将其打印在屏幕上。
步骤 4 - 使用 for 循环遍历数组以检查当前元素是否等于下一个元素。
步骤 5 - 如果两个元素相等,则使用 for 循环删除重复的元素,并通过执行 size-- 将数组的大小减少 1
步骤 6 - 遍历整个数组后,使用 fmt.Println() 函数在屏幕上打印获得的新数组的元素。
示例
GoLang 程序从数组中删除重复元素。
package main import "fmt" func main() { arr := []int{1, 2, 2, 4, 4, 5, 7, 5} fmt.Println("输入的未排序数组为:", 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("删除重复值后得到的数组元素为:") for i := 0; i < size; i++ { fmt.Println(arr[i]) } }
输出
输入的未排序数组为: [1 2 2 4 4 5 7 5] 删除重复值后得到的数组元素为: 1 2 4 5 7
结论
我们已成功编译并执行了一个 golang 程序,用于从数组中删除重复元素,并提供了示例。