从两个数组中寻找不同元素的Golang程序
在本教程中,我们将看到写一个go语言程序来寻找两个数组中的不同元素。在这篇文章中,我们将写两个程序。在第一个程序中,我们将使用字符串阵列,而在第二个程序中,我们将使用整数阵列。
算法
第1步 - 导入 fmt 包。
第2步 - 定义三个函数,名为intersection(), uniquearr1和uniquearr2。
第 3 步 – intersection()从两个数组中找到共同的数组元素,而另外两个函数从给定的数组中删除共同的元素。
第4 步 – 所有这些函数使用for循环来遍历两个数组,并检查一个数组的当前元素是否等于另一个数组的元素。
第5 步 – 启动main()函数。
第6 步 – 初始化两个字符串数组,并向它们存储数值。
第 7 步 – 调用intersection()函数,并将最终结果存储在一个不同的变量中。
第 8 步 – 现在,调用uniquearr1()和uniquearr2(),将数组和结果数组作为参数传给它。存储结果并将两个数组追加到一个新数组中。
第9步 - 在屏幕上打印结果。
例子1
下面的代码说明了我们如何在两个不同的字符串数组中找到不同的元素。
package main
import "fmt"
// function to get common elements
func intersection(arr1, arr2 []string) []string {
out := []string{}
bucket := map[string]bool{}
for _, i := range arr1 {
for _, j := range arr2 {
if i == j && !bucket[i] {
out = append(out, i)
bucket[i] = true
}
}
}
return out
}
// function to remove common elements from first array
func uniquearr1(arr1, result []string) []string {
index := len(arr1)
index1 := len(result)
for i := 0; i <= index-1; i++ {
for j := 0; j <= index1-1; j++ {
if arr1[i] == result[j] {
arr1[i] = arr1[index-1]
arr1[index-1] = ""
arr1 = arr1[:index-1]
index = index - 1
i = 0
}
}
}
return arr1
}
// function to remove common elements from second array
func uniquearr2(arr2, result []string) []string {
index1 := len(result)
lenarr2 := len(arr2)
for i := 0; i <= lenarr2-1; i++ {
for j := 0; j <= index1-1; j++ {
if arr2[i] == result[j] {
arr2[i] = arr2[lenarr2-1]
arr2[lenarr2-1] = ""
arr2 = arr2[:lenarr2-1]
lenarr2 = lenarr2 - 1
i = 0
}
}
}
return arr2
}
func main() {
arr1 := []string{"apple", "mango", "banana", "papaya"}
fmt.Println("The first array entered is:", arr1)
arr2 := []string{"cherry", "papaya", "mango"}
fmt.Println("The second array entered is:", arr2)
result := intersection(arr1, arr2)
fmt.Println()
result1 := uniquearr1(arr1, result)
result2 := uniquearr2(arr2, result)
var finalres []string
finalres = append(finalres, result1...)
finalres = append(finalres, result2...)
fmt.Println("The final array containing distinct values from the above mentioned arrays is:", finalres)
}
输出
The first array entered is: [apple mango banana papaya]
The second array entered is: [cherry papaya mango]
The final array containing distinct values from the above mentioned arrays is: [apple banana cherry]
例2
下面的代码说明了我们如何用go编程语言找到两个不同的整数数组中的不同元素。
package main
import "fmt"
// function to get common elements
func intersection(arr1, arr2 []int) []int {
out := []int{}
bucket := map[int]bool{}
for _, i := range arr1 {
for _, j := range arr2 {
if i == j && !bucket[i] {
out = append(out, i)
bucket[i] = true
}
}
}
return out
}
func uniquearr1(arr1, result []int) []int {
index := len(arr1)
index1 := len(result)
for i := 0; i <= index-1; i++ {
for j := 0; j <= index1-1; j++ {
if arr1[i] == result[j] {
arr1[i] = arr1[index-1]
arr1[index-1] = 0
arr1 = arr1[:index-1]
index = index - 1
i = 0
}
}
}
return arr1
}
func uniquearr2(arr2, result []int) []int {
index1 := len(result)
lenarr2 := len(arr2)
for i := 0; i <= lenarr2-1; i++ {
for j := 0; j <= index1-1; j++ {
if arr2[i] == result[j] {
arr2[i] = arr2[lenarr2-1]
arr2[lenarr2-1] = 0
arr2 = arr2[:lenarr2-1]
lenarr2 = lenarr2 - 1
i = 0
}
}
}
return arr2
}
func main() {
arr1 := []int{11, 25, 35, 23, 54}
fmt.Println("The first array entered is:", arr1)
arr2 := []int{35, 89, 60, 54, 23}
fmt.Println("The second array entered is:", arr2)
result := intersection(arr1, arr2)
fmt.Println()
result1 := uniquearr1(arr1, result)
result2 := uniquearr2(arr2, result)
var finalres []int
finalres = append(finalres, result1...)
finalres = append(finalres, result2...)
fmt.Println("The final array containing distinct values from the above mentioned arrays is:", finalres)
}
输出
The first array entered is: [11 25 35 23 54]
The second array entered is: [35 89 60 54 23]
The final array containing distinct values from the above mentioned arrays is: [11 25 60 89]
总结
我们已经成功地编译并执行了一个Go语言程序,以寻找两个数组的不同元素,并附上了一些例子。