Go語言中的變量和常量
一、變量相關
1.變量聲明
C# : int a;
Go : var a int; 需要在前面加一個var關鍵字,後面定義類型
可以使用 var( a int; b string;)減少var
2.變量初始化
var a int = 10 // 正確的使用方式1 var a = 10 // 正確的使用方式2,編譯器可以自動推導出v2的類型 a := 10 // 正確的使用方式3,編譯器可以自動推導出v3的類型
在:=左側的變量不應該是已經被聲明過的
3.變量賦值
註意:Go語言的新特性 “Simultaneous Assignment” (平行賦值、多重賦值 ……)
a,b = b,a 可以方便的交換兩個數的值,之前的其他語言可能都需要加一個temp變量
對於這個我其實是有疑問的,就是Go語言是如何實現該功能的?按照我的想法如果是go語言底層也是按照加入一個變量的方式,那麼豈不是輸出的a和b都是b的值瞭?達不到交換的目的。
大概結論就是,這個賦值操作可以看成一個原子操作。
4.匿名變量
Go可以定義匿名變量來減少不需要的代碼,例如,我隻關心Value,不想打印Key的時候可以用“_”代替變量。同理對於有多個返回值的方法,可以用“_”代替我不想要的返回值,這樣就減少瞭變量的定義。
func main(){ x:=make(map[string]int16) x["apple"] =100 x["orange"] = 50 x["pear"]=500 for _,value := range x{ fmt.Println(value); } }
二、常量相關
1.字面常量
Go語言的字面常量是無類型的,可以被賦值給任何類型的變量。
例如 AConstNumber 可以賦值給int、float32等類型,但是賦值給string就出錯瞭
package main import ( "fmt") func main(){ const AConstNumber = -100 var x int = AConstNumber var y float32 = AConstNumber fmt.Println("x:",x) fmt.Println("y:",y) }
2.預定義常量
Go語言預定義瞭這些常量:true、false和iota。
iota是個什麼玩意?
iota比較特殊,可以被認為是一個可被編譯器修改的常量,在每一個const關鍵字出現時被 重置為0,然後在下一個const出現之前,每出現一次iota,其所代表的數字會自動增1。 (一個計數器?)
例如:
func main(){ const( a = iota *100 b = iota *100 c = iota *100 ) const( d = iota *100 e = iota *100 f = iota *100 ) fmt.Println(a) // 打印 0 fmt.Println(b) // 打印 100 fmt.Println(c) // 打印 200 fmt.Println(d) // 打印 0 fmt.Println(e) // 打印 100 fmt.Println(f) // 打印 200 }
所以 iota 這個東西用好瞭就能當枚舉使用瞭,正好Go語言不支持enum關鍵字
以上就是本文的全部內容,希望對大傢的學習有所幫助,也希望大傢多多支持WalkonNet。