知道为什么 for 循环初始值设定项中的这个结构表达式在编译时会出现语法错误吗?在这种情况下,指向结构的指针工作正常,但 ofc 我需要如下所示的局部变量。感谢您的建议!
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
}
}()
简化您的代码:
for r := Request{}; r.err == nil; r.id++ {
r.line, r.err = input.ReadSlice(0x0a)
channel <- r
}
给出编译时错误:
预期的布尔或范围表达式,发现简单的语句(复合文字周围缺少括号?)(还有 1 个错误)
这个结构解析起来是不明确的。左大括号'{'
不明显它是否是一个的一部分复合文字 https://golang.org/ref/spec#Composite_literals或左大括号for
声明本身(for
block https://golang.org/ref/spec#Block).
您可以通过在复合文字周围使用括号来使其明显(如错误所示):
for r := (Request{}); r.err == nil; r.id++ {
r.line, r.err = input.ReadSlice(0x0a)
channel <- r
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)