Is there a way to iterate over a slice in reverse in Go?

后端 未结 7 1729
猫巷女王i
猫巷女王i 2021-01-30 15:28

It would be convenient to be able to say something like:

for _, element := reverse range mySlice {
        ...
}
7条回答
  •  刺人心
    刺人心 (楼主)
    2021-01-30 15:55

    One could use a channel to reverse a list in a function without duplicating it. It makes the code nicer in my sense.

    package main
    
    import (
        "fmt"
    )
    
    func reverse(lst []string) chan string {
        ret := make(chan string)
        go func() {
            for i, _ := range lst {
                ret <- lst[len(lst)-1-i]
            }
            close(ret)
        }()
        return ret
    }
    
    func main() {
        elms := []string{"a", "b", "c", "d"}
        for e := range reverse(elms) {
            fmt.Println(e)
        }
    }
    

提交回复
热议问题