Variables 在Go var Declaration中显式提供类型在隐式工作时失败
我是新手,目前正在进行Variables 在Go var Declaration中显式提供类型在隐式工作时失败,variables,go,variable-declaration,Variables,Go,Variable Declaration,我是新手,目前正在进行围棋工具之旅 在Short variable declarations部分,我修改了示例代码,使其看起来像这样 package main import "fmt" func main() { var i, j int = 1, 2 k := 3 var c bool, python string = true, "test" fmt.Println(i, j, k, c, python) } 但是,当我运行上面的代码时,我得到了错误:
围棋工具之旅
在Short variable declarations部分,我修改了示例代码,使其看起来像这样
package main
import "fmt"
func main() {
var i, j int = 1, 2
k := 3
var c bool, python string = true, "test"
fmt.Println(i, j, k, c, python)
}
但是,当我运行上面的代码时,我得到了错误:
# command-line-arguments
./compile233.go:8:12: syntax error: unexpected comma at end of statement
但是,如果我从var
声明中删除类型,如下所示:
package main
import "fmt"
func main() {
var i, j int = 1, 2
k := 3
var c, python = true, "test"
fmt.Println(i, j, k, c, python)
}
它起作用了
我无法找出第一个例子的错误,这个错误对我来说似乎有点误导。有人能解释一下我做错了什么以及为什么会出错吗?变量声明语句定义为
VarDecl = "var" ( VarSpec | "(" { VarSpec ";" } ")" ) .
VarSpec = IdentifierList ( Type [ "=" ExpressionList ] | "=" ExpressionList ) .
这意味着,如果要声明多个变量,并且在一条语句中显式指定类型,则所有变量都必须具有相同的类型。并且该类型必须位于标识符列表之后
所以
参考:
VarDecl = "var" ( VarSpec | "(" { VarSpec ";" } ")" ) .
VarSpec = IdentifierList ( Type [ "=" ExpressionList ] | "=" ExpressionList ) .
这意味着,如果要声明多个变量,并且在一条语句中显式指定类型,则所有变量都必须具有相同的类型。并且该类型必须位于标识符列表之后
所以
参考: