go - 以下代码片段中的 ~once~ 变量是什么意思?

标签 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 { ... }

最佳答案

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

关于go - 以下代码片段中的 ~once~ 变量是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49683124/

相关文章:

go - 如何使用银杏在多个测试文件中编写测试用例?

dictionary - 如何将 map 转换为条目 slice ?

bash - Go migrate 不会安装在 MacOS 上

r - 在for循环中获取列表名称

go - 什么决定了goroutines的执行顺序?

go - 为什么在这种情况下 go 不报告 "slice bounds out of range"?

compilation - 自定义控制流编译词示例

c - 我们可以从控制流图中得到什么信息?

objective-c - Main 中 UIApplicationMain 之后的 Objective C 执行顺序是什么?

后续过程的控制流图和圈复杂度