Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Variables 在Go var Declaration中显式提供类型在隐式工作时失败_Variables_Go_Variable Declaration - Fatal编程技术网

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 ) .
这意味着,如果要声明多个变量,并且在一条语句中显式指定类型,则所有变量都必须具有相同的类型。并且该类型必须位于标识符列表之后

所以

参考:


但是隐式是如何工作的,因为即使没有提到类型,它仍然是一个声明中的多个类型?@AyushGupta它工作是因为语法允许它。“在一个声明中仍然有多个类型”——这很好。只有一个类型限定符是允许的。但是隐式是如何工作的,因为即使没有提到类型,它在一个声明中仍然是多个类型?@AyushGupta它工作是因为语法允许它。“在一个声明中仍然有多个类型”——这很好。只允许使用一个类型限定符。