在go语言中寻找两个切片或数组中的相同元素/共同点/交集并集示例代码
Go  /  管理员 发布于 1年前   301
你有两个相同长度的切片/数组,你如何找出它们是否有相似/共同的元素?不同元素?交集并集?
解决方案:
迭代第一个切片的元素。
得到索引号。
用这个索引号得到第二个切片的元素。
比较这些元素。
如果相似或相同,则将该元素添加到一个新的切片。
循环,直到第一个切片中不再有元素。
代码示例:
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
索引超出范围。
123 在
Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..原梓番博客 在
在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..博主 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..1111 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..路人 在
php中使用hyperf框架调用讯飞星火大模型实现国内版chatgpt功能示例中评论 教程很详细,如果加个前端chatgpt对话页面就完美了..Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号