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