下面是代碼例子:
//go 變量 //申明包名main package main //導入包名 import( "fmt" ) var a int //聲明一個int類型的變量 var b struct{ //聲明一個結構體 name string } var c = 8 //聲明變量同時賦值 var ( //批量聲明變量,簡潔 d int e string ) var name1 int = 5 //1聲明變量name1,並且初始化 //一行申明多個變量 var f,g int //同一行初始化多個變量,不同類型也可以,這裡默認初始化值,根據值進行定義了類型。 var h,i,j = 5,"abd",0.4 func main(){ name2 := "test" //2聲明變量並初始化值,這種賦值不能在函數外面進行賦值 //列印變量 fmt.Println(a,b,c,d,e,f,g,h,i,j) fmt.Println(name1,name2) }
總結:
1、變量聲明(variable declaration)中的初始化表達式(initialization expressions)的求值順序(evaluation order)由初始化依賴(initialization dependencies)決定;但對於初始化表達式内部的操作數的求值需要按照2中的順序:從左到右。
2、在非變量初始化語句中,對表達式、賦值語句或返回語句中的操作數進行求值時,操作數中包含的函數(function)調用、方法(method)調用和通信操作(主要針對channel)將按語法從左到右的順序求值。
3、賦值語句求值分爲兩個階段,第一階段是等號左邊的index expressions、pointer indirections和等號右邊的表達式中的操作數的求值順序按照2中從左到右的順序;第二階段按從左到右的順序對變量賦值。
注意:
I. Go裡面不損失精度的情況下會把8.0這類浮點數視作整數8
II. Go裡面的常數是高精度數,分爲幾類。
有類型的:uint(8),類型顯式指定了,在表達式裡面不會變化。
無類型的:分成無類型整數和無類型浮點兩類。這兩類在使用的時候會根據上下文需要的類型轉化爲實際類型