有兩個字符串類型的切片。我想從golang中的兩個切片找到截集結果。我想找到最佳解決方案而不是迭代每個切片。如何找到golang中兩個截面的截取結果
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)
}
}
}
如果給我很好的解決方案。
這些是「切片」,而不是陣列! –
將較短切片的字符串填充到映射中作爲O(1)存在查找的關鍵點,並迭代查找附加到結果集的映射中的值的較長切片(如果找到)。需要比您的方法更多的內存。平常的權衡。 – Volker
相關/可能的重複項:[檢查值是否在列表中](http://stackoverflow.com/a/30452518/1705598);和[如何創建一個包含唯一字符串的數組?](http://stackoverflow.com/a/33207265/1705598);和[在Golang中檢查IP地址片段的IP的有效方法](http://stackoverflow.com/a/39249045/1705598);和[在Go Slice或Array中查找唯一項目](http://stackoverflow.com/a/34111576/1705598) – icza