以下代码片段中的〜once~var变量的含义是什么?

时间:2018-04-05 23:41:39

标签: go control-flow

问题是关于从pipe.go of the standard go library提取的以下代码段中的使用once变量

for once := true; once || len(b) > 0; once = false {
    select {
    case p.wrCh <- b:
        nw := <-p.rdCh
        b = b[nw:]
        n += nw
    case <-p.done:
        return n, p.writeCloseError()
    }
}

我的理解是,只要len(b) > 0循环就不会终止,并且循环将至少执行一次。

那么为什么不写呢

for len(b) > 0 { ... }

1 个答案:

答案 0 :(得分:3)

看起来once用于制作一个do ... while(condition);循环,Go没有。