2014-01-12 136 views
28

是否可以使用Golang一次聲明多個變量?你可以在Go中一次聲明多個變量嗎?

例如,在Python中,你可以輸入:

a = b = c = 80 

,所有值將是80

+1

對不起。在Go中,=運算符創建一個語句,而不是表達式。這是爲了避免人們在其他事情中做任務難以理解的花哨事物。 – fuz

+0

編程中的語句和表達式有什麼區別? –

回答

45

是的,你可以:

var a, b, c string 
a = "foo" 
fmt.Println(a) 

你可以做些什麼樣的相似對於內嵌分配,但不太方便:

a, b, c := 80, 80, 80 
+0

所以你不能按照go playground http://play.golang.org/p/jzRcG8Ox4A做'var a,b =「a」,「b」string'這樣的事情有多難過:'(沒有方式來做多個聲明並同時分配它們 –

+8

@CharlieParker它的工作原理你只需要將類型聲明移動到'='的另一端:http://play.golang.org/p/cj0nZ -RbpI – turtlemonvh

7

在語言規範而言,這是因爲變量與定義:

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

(摘自「Variable declaration」)

對於一種類型的標識符的列表,分配給一個expressionExpressionList

const a, b, c = 3, 4, "foo" // a = 3, b = 4, c = "foo", untyped integer and string constants 
const u, v float32 = 0, 3 // u = 0.0, v = 3.0 
0

試試這個在去操場: https://play.golang.org/

package main 

import "fmt" 

func main() { 
    a, b := "a", "b"; //Declare And Assign 
    var c, d string; //Declare Only 
    fmt.Println(a,b); 
    fmt.Println(c,d); 
} 
相關問題