你正在使用哪个版本的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
对于无法编译的大部分代码都不起作用。但我认为这里应该可以工作。
2条答案
按热度按时间bybem2ql1#
a <- b
是一个发送 语句,而不是一个表达式。这个错误信息看起来相当合理。解析器通常不会评论变量的类型。r1zk6ea12#
我明白了。但是这个信息并没有让人们第一时间意识到真正的原因。而且,后半句"expecting comma or )"的表述并不准确。逗号和右括号并非唯一的可能性。