duanlu4371 2016-02-25 14:55
浏览 315
已采纳

是否可以使用for循环遍历golang中返回的函数?

Say we have this:

func foo() func() int {
    return func() {
        for i := range [0..10] {
            return i
        }
    }
}

func main() {
    for i := foo() {

    }
}

Can I iterate over the returned function in a for loop without knowing how many times it will loop?

  • 写回答

2条回答 默认 最新

  • doubi9531 2016-02-25 15:13
    关注

    For example,

    package main
    
    import "fmt"
    
    func foo(n int) func() (int, bool) {
        i := -1
        return func() (int, bool) {
            if i >= n {
                return 0, true
            }
            i++
            return i, false
        }
    }
    
    func main() {
        f := foo(5)
        for i, eof := f(); !eof; i, eof = f() {
            fmt.Println(i)
        }
    }
    

    Output:

    0
    1
    2
    3
    4
    5
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥50 C++使用TWAIN协议如何实现A3幅面扫描仪扫描A4横向
  • ¥15 如何在sql server里完成筛选
  • ¥15 请问为什么我配置IPsec后PC1 ping不通 PC2,抓包出来数据包也并没有被加密
  • ¥200 求博主教我搞定neo4j简易问答系统,有偿
  • ¥15 nginx的使用与作用
  • ¥100 关于#VijeoCitect#的问题,如何解决?(标签-ar|关键词-数据类型)
  • ¥15 一个矿井排水监控系统的plc梯形图,求各程序段都是什么意思
  • ¥50 安卓10如何在没有root权限的情况下设置开机自动启动指定app?
  • ¥15 ats2837 spi2从机的代码
  • ¥200 wsl2 vllm qwen1.5部署问题