變量這個詞來源於數學,相似方程中的x、y,表明的是存儲在計算機中的值。這裏主要介紹Go和其它編程語言不同的地方,在前面咱們提到過,Go是一門靜態語言。靜態語言區別動態語言一個重要的特性就是變量的類型不可變,通常是在聲明的時候就指定類型,以後就不可修改它的類型,而動態語言能夠隨時修改變量的類型。Go的變量能夠在聲明的時候不指定類型而是直接賦值,Go會自動根據值判斷變量的類型,好比:編程
var i = 1
固然這時i
的類型(int
)也就肯定了以後不能修改i
的類型。
也能夠聲明的時候指定類型:編程語言
var i int
這裏面的i
就是int
類型。若是變量聲明的時候沒有給定初始值,那默認就是零值,好比:函數
var i int var s string fmt.Println(i) fmt.Println(s)
輸出是:指針
0
這裏string的零值是""。bool類型的零值是false,之後講到的指針類型零值是nilcode
:=
聲明上面介紹過,Go能夠在變量定義的時候比指定類型,系統自動判斷類型,那聲明的變量的時候加上var是否是感受有點多餘了。Go能夠用:=
這種寫法直接聲明變量例如:數學
i := 5 a := false
這時i
就是int
類型值爲5
,a
就是bool
類型值爲false
,須要注意的是它只能被用在函數中,不能全局的聲明變量例如:string
package main import "fmt" i := 1 func main() { fmt.Println(i) }
這樣是不行的。
還有就是相同的變量,在同一個代碼塊中只能這樣被聲明一次,第二次聲明也是錯誤的例如:class
package main import "fmt" func main() { i := 1 i : = 2 fmt.Println(i) }
這樣也會報錯。import
多變量聲明是指一次能夠聲明多個變量例如變量
var i, j, k int i, j, k = 0, 1, 2 var m, n = 1, 2 var a, b = 1, false
須要指出的是多個變量聲明能夠指定不通的類型例如上面 var a, b = 1, false
也支持:=
形式的多變量聲明
a, b := 1, false
只要 :=
左側出現了新的變量就能夠例如:
a, b := 1, false b, c := false, 1