知道为什么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
}
}()
答案 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