在go语言中寻找两个切片或数组中的相同元素/共同点/交集并集示例代码
你有两个相同长度的切片/数组,你如何找出它们是否有相似/共同的元素?不同元素?交集并集?
解决方案:
迭代第一个切片的元素。
得到索引号。
用这个索引号得到第二个切片的元素。
比较这些元素。
如果相似或相同,则将该元素添加到一个新的切片。
循环,直到第一个切片中不再有元素。
代码示例:
package main
import (
"fmt"
)
// 注意:这个例子只有在切片a的长度==切片b的长度时才有效。
// 在生产中,请确保在比较之前检查片子的长度和容量。
// 在比较之前。
func main() {
a := []string{"Hello", "No", "Cheers"}
fmt.Println("切片 a : ", a)
b := []string{"Hello", "Yes", "Cheers"}
fmt.Println("切片 b : ", b)
// 将a与be进行比较,找出共同的项目
// 并存储到c中
c := []string{}
for i := range a {
if a[i] == b[i] {
c = append(c, a[i])
}
}
fmt.Println("相同元素 : ", c)
// 比较a和be,找到不在a中的项目
// 并存储到d中
d := []string{}
for i := range a {
if a[i] != b[i] {
d = append(d, a[i])
}
}
fmt.Println("a比b多的元素 ", d)
// 将a与be进行比较,找到不在b中的项目
//并存储到e中
e := []string{}
for i := range b {
// 遍历b而不是a
if a[i] != b[i] {
e = append(e, b[i])
}
}
fmt.Println("b比a多的元素 ", e)
}
输出 :
切片 a : [Hello No Cheers]
切片 b : [Hello Yes Cheers]
相同元素 : [Hello Cheers]
a比b多的元素 [No]
b比a多的元素 [Yes]
注意:
这个例子只有在片子a的长度==片子b的长度时才有效。
在生产中,确保在比较之前检查片子的长度和容量。
否则,会报一下错误:
panic: runtime error: index out of range
索引超出范围。
相关文章