猿问

构造 for 循环初始化程序

知道为什么 for 循环初始值设定项中的这个结构表达式会在编译时产生语法错误吗?在这种情况下,指向 struct 的指针工作正常,但我需要像波纹管这样的局部变量。感谢您的建议!


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

    }

}()


慕雪6442864
浏览 177回答 1
1回答

猛跑小猪

简化你的代码:for r := Request{}; r.err == nil; r.id++ {&nbsp; &nbsp; r.line, r.err = input.ReadSlice(0x0a)&nbsp; &nbsp; channel <- r}给出编译时错误:预期的布尔值或范围表达式,发现简单的语句(复合文字周围缺少括号?)(还有 1 个错误)这个构造解析不明确。左大括号'{'是复合文字的一部分还是for语句本身(for 块)的左大括号并不明显。您可以通过在复合文字周围使用括号来使其显而易见(如错误所示):for r := (Request{}); r.err == nil; r.id++ {&nbsp; &nbsp; r.line, r.err = input.ReadSlice(0x0a)&nbsp; &nbsp; channel <- r}
随时随地看视频慕课网APP

相关分类

Go
我要回答