一篇文章學(xué)會GO語言中的變量
1.標(biāo)識符
在編程語言中標(biāo)識符就是程序員定義的具有特殊意義的詞,比如變量名,常量名,函數(shù) .bc,_123,a1232
2.關(guān)鍵字
關(guān)鍵字是指編程語言中預(yù)先定義好的具有特殊含義的標(biāo)識符,關(guān)鍵字和保留字都不建議用作變量名
Go語言中有25個關(guān)鍵字
break default func interface select
case defer go map struct
chan else goto package switch
const fallthrough if range type
continue for import return var
還有37個保留字
Constants: true false iota nil
Types: int int8 int16 int32 int64
uint uint8 uint16 uint32 uint64 uintptr
float32 float64 complex128 complex64
bool byte rune string errorFunctions: make len cap new append copy close delete
complex real imag
panic recover
3.變量
變量的功能是存儲數(shù)據(jù),不同的變量保存的數(shù)據(jù)類型可能會不一樣,經(jīng)過半個多世紀(jì)的發(fā)展,編程語言已經(jīng)基本形成了一套固定的類型,常見變量的數(shù)據(jù)類型有:整型、浮點(diǎn)型、布爾型等
Go語言中的每一個變量都有自己的類型,并且變量必須經(jīng)過聲明才能開始使用
3.1 Go語言中變量的聲明
聲明格式
var 變量名 變量類型
變量聲明以關(guān)鍵字var開頭,變量類型放在變量的后面,行尾無需分號,舉個例子
var name string var age int var isOk bool
3.2 批量聲明
每聲明一個變量就需要寫var關(guān)鍵字會比較繁瑣,go語言中還支持批量變量聲明:
var ( a string b int c bool d float32 )
3.3 變量的初始化
Go語言在聲明變量的時候,會自動對變量對應(yīng)的內(nèi)存區(qū)域進(jìn)行初始化操作,每個變量會被初始化成其類型的默認(rèn)值。例如整數(shù)和浮點(diǎn)型變量的默認(rèn)值為0,字符串變量的默認(rèn)值為空字符串,布爾型變量默認(rèn)為false。切片、函數(shù)、指針變量的默認(rèn)為nil
func main() { var ( test01 string test02 int test03 bool test04 float32 ) fmt.Println(test01, test02, test03, test04) }
0 false 0
當(dāng)然我們也可在聲明變量的時候?yàn)槠渲付ǔ跏贾怠W兞砍跏蓟臉?biāo)準(zhǔn)格式如下:
var 變量名 類型=表達(dá)式
例子
var name string="wql" var age int =18
或者一次初始化多個變量
var name,age="wql",20
有時我們會將變量的類型省略,這個時候編譯器會根據(jù)等號右邊的值來推導(dǎo)變量的類型完成初始化
var name = "wql" var age = 18
3.4 短變量聲明
在函數(shù)內(nèi)部,可以使用更簡略的:=方式聲明并初始化變量
package main //告訴程序需要fmt包,fmt具有打印輸出的函數(shù) import "fmt" var n int func main() { b := 123 fmt.Println(b) }
3.5匿名變量
在使用多重賦值時,如果想要忽略某個值,可以使用匿名變量(anonymous variable)。匿名變量用一個下劃線表示例如
package main //告訴程序需要fmt包,fmt具有打印輸出的函數(shù) import "fmt" func main() { x, _ := foo() _, y := foo() fmt.Println("x=", x) fmt.Println("y=", y) } func foo() (int, string) { return 10, "wql" }
123 123 hello wql x= 10 y= wql
匿名變量不占用命名空間,不會分配內(nèi)存,所以匿名變量之間不存在重復(fù)聲明
注意事項
- 函數(shù)外的每個語句必須以關(guān)鍵字開始(var、const、func等)
- :=不能用在函數(shù)外
- _多用于占位,表示忽略值
4.常量
相對于變量,常量時恒定不變的值,多用于定義程序運(yùn)行期間不會改變的哪些值。常量的聲明和變量的聲明非常類似,知識把var換成了const,常量在定義的時候必須賦值
const pi = 3.12
const e = 2.7
fmt.Println(pi, e)
1
2
3
在聲明了pi和e這兩個常量之后,在整個程序運(yùn)行期間它們的值都不能再發(fā)生變化了
多個常量也可以一起聲明
const( p1 = 2 p2 = 4 )
const同時聲明多個常量時,如果省略了值則表示和上面一行的值相同,例如
const( p3 = 200 p4 p5 )
上面的實(shí)例中p3,p4,p5的值都是200
5.iota
iota是go語言的常量計數(shù)器,只能在常量的表達(dá)式中使用
iota在const關(guān)鍵字出現(xiàn)時將被重置為0,const中每新增一行常量聲明將使iota計數(shù)一次,iota可以理解為const語句塊中的行索引,使用iota能簡化定義,在定義枚舉時很有用
const ( n1 = iota //0 n2 //1 n3 //2 n4 //3 ) fmt.Println(n1, n2, n3, n4)
0 1 2 3
`幾個常見的iota實(shí)例:
`使用下劃線跳過某些值
const ( n1 = iota //0 n2 //1 _ n4 //3 )
iota聲明中間插隊 const ( n1 = iota //0 n2 = 100 //100 n3 = iota //2 n4 //3 )
也就是說有無初始值,iota都+1,常量有初始值就是初始值,沒有初始值為iota+1
const ( _ = iota KB = 1 << (10 * iota) MB = 1 << (10 * iota) GB = 1 << (10 * iota) TB = 1 << (10 * iota) PB = 1 << (10 * iota) )
多個iota定義在一行
const ( a, b = iota + 1, iota + 2 //1,2 c, d //2,3 e, f //3,4 )
所以iota有兩個特點(diǎn)
- 當(dāng)遇見const出現(xiàn)被置為0
- 每新增一行就+1
總結(jié)
到此這篇關(guān)于一篇文章學(xué)會GO語言中變量的文章就介紹到這了,更多相關(guān)GO語言變量內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Golang在Mac、Linux、Windows下如何交叉編譯的實(shí)現(xiàn)
這篇文章主要介紹了Golang在Mac、Linux、Windows下如何交叉編譯的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03go?goroutine實(shí)現(xiàn)素數(shù)統(tǒng)計的示例
這篇文章主要介紹了go?goroutine實(shí)現(xiàn)素數(shù)統(tǒng)計,本文通過示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-07-07