结构在 for 循环初始化器中
Struct in for loop initializer
知道为什么 for 循环初始化器中的这个结构表达式会在编译时产生语法错误吗?在这种情况下,指向结构的指针工作正常,但我需要像下面这样的局部变量。谢谢指教!
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
}
给出编译时错误:
expected boolean or range expression, found simple statement (missing parentheses around composite literal?) (and 1 more errors)
此结构难以解析。左大括号 '{'
是否是 composite literal or the opening brace of the for
statement itself (the for
block).
的一部分并不明显
您可以通过在复合文字周围使用括号使其显而易见(如错误所示):
for r := (Request{}); r.err == nil; r.id++ {
r.line, r.err = input.ReadSlice(0x0a)
channel <- r
}
知道为什么 for 循环初始化器中的这个结构表达式会在编译时产生语法错误吗?在这种情况下,指向结构的指针工作正常,但我需要像下面这样的局部变量。谢谢指教!
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
}
给出编译时错误:
expected boolean or range expression, found simple statement (missing parentheses around composite literal?) (and 1 more errors)
此结构难以解析。左大括号 '{'
是否是 composite literal or the opening brace of the for
statement itself (the for
block).
您可以通过在复合文字周围使用括号使其显而易见(如错误所示):
for r := (Request{}); r.err == nil; r.id++ {
r.line, r.err = input.ReadSlice(0x0a)
channel <- r
}