在开发中,我需要比较两个list
,然后取出他们之中不同的部分,这里Golang也没有合适的法子,一般的方法就是转map
进行处理
//difference 进行比对,输出不同的[]string
func difference(slice1, slice2 []string) []string {
m := make(map[string]int)
nn := make([]string, 0)
inter := intersect(slice1, slice2)
for _, v := range inter {
m[v]++
}
for _, value := range slice1 {
times, _ := m[value]
if times == 0 {
nn = append(nn, value)
}
}
return nn
}
//intersect 把两个对比的列表进行map化处理
func intersect(slice1, slice2 []string) []string {
m := make(map[string]int)
nn := make([]string, 0)
for _, v := range slice1 {
m[v]++
}
for _, v := range slice2 {
times, _ := m[v]
if times == 1 {
nn = append(nn, v)
}
}
return nn
}
func main() {
infinode := []string{"10.0.9.1","10.0.9.2"}
syncnodes := []string{"10.0.9.1","10.0.9.2", "10.0.9.3"}
ips := difference(infinode, syncnodes)
}