如何在golang中找到两个切片的截距结果
How to finding result of intercept of two slices in golang
字符串中有两个切片 type.I 想要从两个切片中的集合中找到截取结果 golang.I 想要找到最佳解决方案而不是迭代每个切片。
first_slice := []string{"F8-E7-1E-14-AE-00", "F8-E7-1E-14-D0-30", "84-18-3A-2F-05-E0","84-18-3A-2F-05-E8" }
second_slice := []string{"F8-E7-1E-14-D0-30", "84-18-3A-2F-05-E8","F8-E7-1E-54-AE-08"}
Output:
result_slice := []string{"F8-E7-1E-14-D0-30", "84-18-3A-2F-05-E8"}
我使用了以下方法,但它不是大型数据集的最佳方法。
var result_slice *[]string
for _, i := range first_slice {
for _, x := range second_slice {
if i == x {
&result_slice.append(i)
}
}
}
如果能给我一个好的解决方案,将不胜感激。
firstSlice := []string{"F8-E7-1E-14-AE-00", "F8-E7-1E-14-D0-30",
"84-18-3A-2F-05-E0", "84-18-3A-2F-05-E8"}
secondSlice := []string{"F8-E7-1E-14-D0-30", "84-18-3A-2F-05-E8",
"F8-E7-1E-54-AE-08"}
resultSlice := []string{}
checkMap := map[string]struct{}{}
for _, addr := range firstSlice {
checkMap[addr] = struct{}{}
}
for _, addr := range secondSlice {
if _, ok := checkMap[addr]; ok {
resultSlice = append(resultSlice, addr)
}
}
fmt.Println(resultSlice)
输出就是你想要的。
一个空结构没有 space 货币
更重要的是,在golang中总是使用camel。
字符串中有两个切片 type.I 想要从两个切片中的集合中找到截取结果 golang.I 想要找到最佳解决方案而不是迭代每个切片。
first_slice := []string{"F8-E7-1E-14-AE-00", "F8-E7-1E-14-D0-30", "84-18-3A-2F-05-E0","84-18-3A-2F-05-E8" }
second_slice := []string{"F8-E7-1E-14-D0-30", "84-18-3A-2F-05-E8","F8-E7-1E-54-AE-08"}
Output:
result_slice := []string{"F8-E7-1E-14-D0-30", "84-18-3A-2F-05-E8"}
我使用了以下方法,但它不是大型数据集的最佳方法。
var result_slice *[]string
for _, i := range first_slice {
for _, x := range second_slice {
if i == x {
&result_slice.append(i)
}
}
}
如果能给我一个好的解决方案,将不胜感激。
firstSlice := []string{"F8-E7-1E-14-AE-00", "F8-E7-1E-14-D0-30",
"84-18-3A-2F-05-E0", "84-18-3A-2F-05-E8"}
secondSlice := []string{"F8-E7-1E-14-D0-30", "84-18-3A-2F-05-E8",
"F8-E7-1E-54-AE-08"}
resultSlice := []string{}
checkMap := map[string]struct{}{}
for _, addr := range firstSlice {
checkMap[addr] = struct{}{}
}
for _, addr := range secondSlice {
if _, ok := checkMap[addr]; ok {
resultSlice = append(resultSlice, addr)
}
}
fmt.Println(resultSlice)
输出就是你想要的。
一个空结构没有 space 货币
更重要的是,在golang中总是使用camel。