Ich bin neu, um Sprache zu gehen. Ich möchte Elemente aus der Liste entfernen, während ich die Liste basierend auf einer Bedingung in go-Sprache wiederhole. Zum Beispiel möchte ich die doppelten Elemente aus der Liste entfernen. Der Code ist unten angegeben.Wie man ein Element aus der Liste entfernt, während man dieselbe Liste in Golang wiederholt
package main
import (
"container/list"
"fmt"
)
var sMap map[int]bool
func main() {
l := list.New()
l.PushFront(4)
l.PushFront(5)
l.PushFront(7)
l.PushFront(6)
l.PushFront(5)
l.PushFront(4)
l.PushFront(5)
l.PushFront(7)
l.PushBack(9)
l = removeDuplicate(l)
for e := l.Front(); e != nil; e = e.Next() {
fmt.Println(e.Value)
}
}
func removeDuplicate(l *list.List) *list.List {
sMap = make(map[int]bool)
for e := l.Front(); e != nil; e = e.Next() {
m := e.Value.(int)
fmt.Println("VALUE : ", m)
if sMap[m] == true {
fmt.Println("Deleting ", e.Value)
l.Remove(e)
} else {
fmt.Println("Adding New Entry", e.Value)
sMap[m] = true
}
}
return l
}
Der obige Code durchläuft die Liste nur bis zur ersten Entfernung. Ich versuche, das Element zu entfernen, während ich durch dieselbe Liste iteriere. Das ist der Grund, warum es nicht funktioniert. Könnte jemand einen Listen-Iterator in Golang vorschlagen?
Ihr Codefragment ist unvollständig und nicht kompiliert. [Wie man ein minimales, komplettes und überprüfbares Beispiel erstellt.] (Http://stackoverflow.com/help/mcve) – peterSO
@peterSO - Ich habe den kompletten Code hinzugefügt – Dany