7
我是新来的语言。我希望从列表中删除元素,同时基于go语言中的条件迭代列表。例如,我想从列表中删除重复的元素。代码如下。如何在golang中迭代相同列表时从列表中删除元素
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
}
上面的代码只是遍历列表直到第一次删除。我试图在遍历相同列表的同时删除元素。这就是它不工作的原因。任何人都可以在golang中提供一个列表迭代器吗?
你的代码段是不完整的,并且不编译。 [如何创建一个最小,完整和可验证的示例。](http://stackoverflow.com/help/mcve) – peterSO
@peterSO - 我添加了完整的代码 – Dany