Go語(yǔ)言中的變量和常量
一、變量相關(guān)
1.變量聲明
C# : int a;
Go : var a int; 需要在前面加一個(gè)var關(guān)鍵字,后面定義類型
可以使用 var( a int; b string;)減少var
2.變量初始化
var a int = 10 // 正確的使用方式1 var a = 10 // 正確的使用方式2,編譯器可以自動(dòng)推導(dǎo)出v2的類型 a := 10 // 正確的使用方式3,編譯器可以自動(dòng)推導(dǎo)出v3的類型
在:=左側(cè)的變量不應(yīng)該是已經(jīng)被聲明過(guò)的
3.變量賦值
注意:Go語(yǔ)言的新特性 “Simultaneous Assignment” (平行賦值、多重賦值 ......)
a,b = b,a 可以方便的交換兩個(gè)數(shù)的值,之前的其他語(yǔ)言可能都需要加一個(gè)temp變量
對(duì)于這個(gè)我其實(shí)是有疑問(wèn)的,就是Go語(yǔ)言是如何實(shí)現(xiàn)該功能的?按照我的想法如果是go語(yǔ)言底層也是按照加入一個(gè)變量的方式,那么豈不是輸出的a和b都是b的值了?達(dá)不到交換的目的。
大概結(jié)論就是,這個(gè)賦值操作可以看成一個(gè)原子操作。

4.匿名變量
Go可以定義匿名變量來(lái)減少不需要的代碼,例如,我只關(guān)心Value,不想打印Key的時(shí)候可以用“_”代替變量。同理對(duì)于有多個(gè)返回值的方法,可以用“_”代替我不想要的返回值,這樣就減少了變量的定義。
func main(){
x:=make(map[string]int16)
x["apple"] =100
x["orange"] = 50
x["pear"]=500
for _,value := range x{
fmt.Println(value);
}
}二、常量相關(guān)
1.字面常量
Go語(yǔ)言的字面常量是無(wú)類型的,可以被賦值給任何類型的變量。
例如 AConstNumber 可以賦值給int、float32等類型,但是賦值給string就出錯(cuò)了
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.預(yù)定義常量
Go語(yǔ)言預(yù)定義了這些常量:true、false和iota。
iota是個(gè)什么玩意?
iota比較特殊,可以被認(rèn)為是一個(gè)可被編譯器修改的常量,在每一個(gè)const關(guān)鍵字出現(xiàn)時(shí)被 重置為0,然后在下一個(gè)const出現(xiàn)之前,每出現(xiàn)一次iota,其所代表的數(shù)字會(huì)自動(dòng)增1。 (一個(gè)計(jì)數(shù)器?)
例如:
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 這個(gè)東西用好了就能當(dāng)枚舉使用了,正好Go語(yǔ)言不支持enum關(guān)鍵字
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Golang算法問(wèn)題之?dāng)?shù)組按指定規(guī)則排序的方法分析
這篇文章主要介紹了Golang算法問(wèn)題之?dāng)?shù)組按指定規(guī)則排序的方法,結(jié)合實(shí)例形式分析了Go語(yǔ)言數(shù)組排序相關(guān)算法原理與操作技巧,需要的朋友可以參考下2017-02-02
細(xì)說(shuō)Go語(yǔ)言中空結(jié)構(gòu)體的奇妙用途
Go語(yǔ)言中,我們可以定義空結(jié)構(gòu)體,即沒(méi)有任何成員變量的結(jié)構(gòu)體,使用關(guān)鍵字?struct{}?來(lái)表示。這種結(jié)構(gòu)體似乎沒(méi)有任何用處,但實(shí)際上它在?Go?語(yǔ)言中的應(yīng)用非常廣泛,本文就來(lái)詳解講講2023-05-05
Go語(yǔ)言模型:string的底層數(shù)據(jù)結(jié)構(gòu)與高效操作詳解
這篇文章主要介紹了Go語(yǔ)言模型:string的底層數(shù)據(jù)結(jié)構(gòu)與高效操作詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-12-12
GO語(yǔ)言實(shí)現(xiàn)文件上傳的示例代碼
這篇文章主要分享一下golang實(shí)現(xiàn)文件上傳的流程和具體代碼,供大家參考,感興趣的小伙伴們可以參考借鑒,希望對(duì)大家能有所幫助2022-08-08
Go標(biāo)準(zhǔn)庫(kù)日志打印及同時(shí)輸出到控制臺(tái)與文件
Go語(yǔ)言內(nèi)置的log包實(shí)現(xiàn)了簡(jiǎn)單的日志服務(wù),下面這篇文章主要給大家介紹了關(guān)于Go標(biāo)準(zhǔn)庫(kù)日志打印及同時(shí)輸出到控制臺(tái)與文件的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-11-11
Centos下搭建golang環(huán)境及vim高亮Go關(guān)鍵字設(shè)置的方法
這篇文章先給大家詳細(xì)介紹了在Centos下搭建golang環(huán)境的步驟,大家按照下面的方法就可以自己搭建golang環(huán)境,搭建完成后又給大家介紹了vim高亮Go關(guān)鍵字設(shè)置的方法,文中通過(guò)示例代碼介紹的很詳細(xì),有需要的朋友們可以參考借鑒,下面來(lái)一起看看吧。2016-11-11
Go語(yǔ)言實(shí)現(xiàn)IP段范圍校驗(yàn)示例
這篇文章主要介紹了Go語(yǔ)言實(shí)現(xiàn)IP段范圍校驗(yàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09

