为了账号安全,请及时绑定邮箱和手机立即绑定

构造 for 循环初始化程序

构造 for 循环初始化程序

Go
慕雪6442864 2021-12-07 17:07:28
知道为什么 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    }}()
查看完整描述

1 回答

?
猛跑小猪

TA贡献1858条经验 获得超8个赞

简化你的代码:


for r := Request{}; r.err == nil; r.id++ {

    r.line, r.err = input.ReadSlice(0x0a)

    channel <- r

}

给出编译时错误:


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


这个构造解析不明确。左大括号'{'是复合文字的一部分还是for语句本身(for 块)的左大括号并不明显。


您可以通过在复合文字周围使用括号来使其显而易见(如错误所示):


for r := (Request{}); r.err == nil; r.id++ {

    r.line, r.err = input.ReadSlice(0x0a)

    channel <- r

}


查看完整回答
反对 回复 2021-12-07
  • 1 回答
  • 0 关注
  • 176 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信