Es gibt zwei Scheiben im Schnurtyp. Ich will, dass Abfangenergebnis in den zwei Scheiben in Golang gefunden wird. Ich will die beste Lösung eher finden, als jede Scheibe iterierend.Wie man Ergebnis des Abschnitts von zwei Scheiben im Golang findet
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"}
Ich habe folgende Ansätze verwenden, aber es ist nicht die beste Ansätze für große Datenmenge.
var result_slice *[]string
for _, i := range first_slice {
for _, x := range second_slice {
if i == x {
&result_slice.append(i)
}
}
}
Schätzen Sie, wenn Sie mir eine gute Lösung geben.
Dies sind 'Slice', nicht Array! –
Füllen Sie die Strings des kürzeren Slice in eine Map als Schlüssel für O (1) Lookup of Existence und iterieren Sie das längere Slice, indem Sie die Werte in der Map nachschlagen, die an das Resultset angehängt werden, falls es gefunden wird. Benötigt mehr Speicher als Ihr Ansatz. Kompromisse wie immer. – Volker
Zugehörige/mögliche Duplikate: [Prüfen, ob ein Wert in einer Liste enthalten ist] (http://stackoverflow.com/a/30452518/1705598); und [Wie kann ich ein Array erstellen, das eindeutige Zeichenfolgen enthält?] (http://stackoverflow.com/a/33207265/1705598); und [Effiziente Methode zur Überprüfung der IP-Adresse in IP-Adressen in Golang] (http://stackoverflow.com/a/39249045/1705598); und [Eindeutige Elemente in einem Go-Slice oder -Array finden] (http://stackoverflow.com/a/34111576/1705598) – icza