go cmd/compile:不完美的编译错误信息

ilmyapht  于 23天前  发布在  Go
关注(0)|答案(2)|浏览(14)

你正在使用哪个版本的Go(go version)?

$ go version
go version go1.16 linux/amd64

这个问题在最新版本中是否会重现?

是的

你做了什么?

package main

  func main() {
    var a, b = 1, -2
    println(a<-b)
  }

你期望看到什么?

syntax error: a is not channel, unexpected <-

但实际上你看到了什么?

syntax error: unexpected <-, expecting comma or )

顺便说一下,go fmt对于无法编译的大部分代码都不起作用。但我认为这里应该可以工作。

bybem2ql

bybem2ql1#

a <- b 是一个发送 语句,而不是一个表达式。这个错误信息看起来相当合理。解析器通常不会评论变量的类型。

r1zk6ea1

r1zk6ea12#

我明白了。但是这个信息并没有让人们第一时间意识到真正的原因。而且,后半句"expecting comma or )"的表述并不准确。逗号和右括号并非唯一的可能性。

相关问题