结构化for循环初始化程序

时间:2016-01-31 23:16:07

标签: go struct composite-literals

知道为什么for循环初始化程序中的这个结构表达式在编译时出现语法错误?在这种情况下,指向struct的指针工作正常但是我需要像bellow这样的局部变量。谢谢你的建议!

type Request struct {
    id   int
    line []byte
    err  error
}

go func() {
    for r := Request{}; r.err == nil; r.id++ {
        r.line, r.err = input.ReadSlice(0x0a)
        channel <- r
    }
}()

1 个答案:

答案 0 :(得分:13)

简化代码:

2>&1

给出编译时错误:

  

预期的布尔值或范围表达式,找到简单的语句(复合文字周围缺少括号?)(还有1个错误)

这个结构解析起来很模糊。左括号for r := Request{}; r.err == nil; r.id++ { r.line, r.err = input.ReadSlice(0x0a) channel <- r } 是否是composite literal的一部分或'{'语句本身(for block)的左大括号,并不明显。< / p>

你可以通过在复合文字周围使用括号来明确它(如错误所示):

for