2017-11-17 2 views
0

私は初めて、go tool tourに行きます。暗黙的に動作している間に、Go var宣言で明示的に型を指定するとエラーが発生します

短い変数宣言セクションでは、このようにサンプルコードを変更しましたか?私は次のようにvar宣言からの種類を削除する場合は、しかし、

# command-line-arguments 
./compile233.go:8:12: syntax error: unexpected comma at end of statement 

:しかし

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) 
} 

、その後、私は上記のコードを実行して、私はエラーを取得する

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) 
} 

できます。

最初の例で何が間違っているのかわかりませんが、エラーは少し誤解を招くようです。誰でも私が間違ったことを説明して、なぜ私はエラーを受けているのでしょうか?

答えて

2

変数宣言文を使用すると、単一のステートメントで明示的に指定された型を持つ複数の変数を宣言する場合、それらはすべて同じ型を持たなければならないことを意味し

VarDecl  = "var" (VarSpec | "(" { VarSpec ";" } ")") . 
VarSpec  = IdentifierList (Type [ "=" ExpressionList ] | "=" ExpressionList) . 

として定義されます。そしてそのタイプは識別子リストの後に来なければなりません。

ので

var foo, bar bool // is valid 
var foo bool, bar bool // is not (only one type qualifier is allowed) 

参考:タイプが言及されていないにもかかわらず、それはまだ独身で、複数のタイプであるため、暗黙の仕事は、にもかかわらず、その後どのように

+0

宣言? –

+0

@AyushGupta構文が許せば動作します。 "それはまだ1つの宣言で複数の型です" ---それは問題ありません。許可されるのは1つのタイプ修飾子だけです。 – zerkms

関連する問題