Wie schleift man zwei Scheiben und löscht mehrere Indizes, basierend auf dem Vergleich? Ich habe Folgendes versucht, aber es ergibt sich ein Fehler "Panik: Laufzeitfehler: Slice Grenzen außerhalb des Bereichs."Go: zwei Scheiben vergleichen und mehrere Indizes löschen
package main
import (
"fmt"
)
func main() {
type My struct {
SomeVal string
}
type Other struct {
OtherVal string
}
var MySlice []My
var OtherSlice []Other
MySlice = append(MySlice, My{SomeVal: "abc"})
MySlice = append(MySlice, My{SomeVal: "mno"})
MySlice = append(MySlice, My{SomeVal: "xyz"})
OtherSlice = append(OtherSlice, Other{OtherVal: "abc"})
OtherSlice = append(OtherSlice, Other{OtherVal: "def"})
OtherSlice = append(OtherSlice, Other{OtherVal: "xyz"})
for i, a := range MySlice {
for _, oa := range OtherSlice {
if a.SomeVal == oa.OtherVal {
MySlice = MySlice[:i+copy(MySlice[i:], MySlice[i+1:])]
}
}
}
fmt.Println(MySlice)
}
http://play.golang.org/p/4pgxE3LNmx
Hinweis: Die oben genannten Arbeiten, wenn nur eine Übereinstimmung gefunden wird. Der Fehler tritt auf, wenn zwei Übereinstimmungen gefunden werden.
Seitliche Anmerkung, das oben genannte funktioniert, wenn nur eine Übereinstimmung gefunden wird. Der Fehler tritt auf, wenn zwei Übereinstimmungen gefunden werden. –
Mögliches Duplikat von [Elemente in Slice entfernen] (http://stackoverflow.com/questions/28699485/remove-elements-in-slice), auch [Slice-Element in einem entfernen für] (http://stackoverflow.com/) Fragen/33495995/remove-slice-Element-in-einem-für), auch [Wie Element des Struct-Arrays in Schleife in Golang entfernen] (http://stackoverflow.com/questions/29005825/how-to-remove- Element-of-Struktur-Array-in-Schleife-in-Golang). – icza
Ja, ich denke du hast Recht. "Remove elements in slice" behebt dasselbe Problem. –