如何在迭代golang中的相同列表时从列表中删除元素

我是新来的语言。我想在基于 go 语言中的条件迭代列表时从列表中删除元素。例如,我想从列表中删除重复的元素。代码如下。


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 中建议一个列表迭代器吗?


长风秋雁
浏览 178回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go