淺析Golang中變量與常量的聲明與使用
變量
變量的類型
變量的作用是用來(lái)存儲(chǔ)數(shù)據(jù),不同的變量保存的數(shù)據(jù)類型有可能是不一樣的,一般常見(jiàn)的數(shù)據(jù)類型有:整型、浮點(diǎn)型、布爾型等。
go作為一個(gè)強(qiáng)類型語(yǔ)言,go中的每一個(gè)變量都有自己的類型,并且變量必須經(jīng)過(guò)聲明才能開(kāi)始使用。
聲明變量
go中的變量需要聲明后才能使用,并且在同一個(gè)作用域中不支持重復(fù)聲明。并且go語(yǔ)言的變量聲明后必須使用。
變量聲明的方式
標(biāo)準(zhǔn)聲明
一般聲明變量的格式為
// var 變量名 變量類型 var name string var age int var isShow bool
批量聲明
當(dāng)在聲明變量的時(shí)候每次都需要寫var關(guān)鍵字會(huì)顯得比較繁瑣,在go中還支持批量的聲明變量
var ( name string age int isShow bool num float32 )
變量的初始化
go中在聲明變量的時(shí)候,會(huì)自動(dòng)對(duì)變量對(duì)應(yīng)的內(nèi)存區(qū)域進(jìn)行初始化操作,每個(gè)變量都會(huì)被初始化成其類型的默認(rèn)值,比如:整型和浮點(diǎn)型變量的默認(rèn)值為0.字符串變量的默認(rèn)值為空字符串。布爾值變量的默認(rèn)值為false。切片、函數(shù)、指針變量的默認(rèn)為nil
但是在聲明變量的時(shí)候?yàn)槠渲付ǔ跏贾?。變量初始化的?biāo)準(zhǔn)格式為
// var 變量名 類型 = 值 var name string = "water" var age int = 18 // 也可以一次定義多個(gè)變量 var name,age = "water", 20
變量類型推導(dǎo)
很多時(shí)候可以將變量的類型省略,編輯器可以根據(jù)等號(hào)右邊的值來(lái)推導(dǎo)出變量的類型
var name = "water" var age = 18
短變量聲明
在函數(shù)內(nèi)部,可以使用:=
的聲明方式初始化變量
package main import ( "fmt" ) // 全局變量 var name = "water" func main() { a := 1 b := 2 fmt.Println(a,b) }
匿名變量
在使用多重賦值時(shí),如果想忽略一個(gè)值,可以使用匿名變量,匿名變量一般用一個(gè)下劃線_
表示,如下
func getValue()(int,string){ return 18,"water" } func main() { a,_ := getValue() _,b := getValue() fmt.Println("a=",a) fmt.Println("b=",b) }
匿名變量不占用命名空間,不會(huì)分配內(nèi)存,所以匿名變量之間不存在重復(fù)聲明,變量聲明需要注意以下問(wèn)題:
- 函數(shù)外的每個(gè)語(yǔ)句都必須以關(guān)鍵字開(kāi)始比如:var、const、func
:=
不能在函數(shù)外使用_
多用于占位,表示忽略值
常量
相比較于變量而言,常量是恒定不變的值,定義一些不會(huì)改變的值。常量的聲明和變量聲明非常相似,只是把var換成了const,常量在定義的時(shí)候必須賦值
const a = 123 const b = 456
常量一旦聲明就不會(huì)再發(fā)生變化了。而且多個(gè)常量也可以一起聲明
const ( a = 123 b = 456 )
如果同時(shí)聲明多個(gè)常量時(shí),省略了值則表示和上面一行的值相同。
const ( a = 1 b c )
這樣a、b、c的值都是100
iota
iota
是go語(yǔ)言的常量計(jì)數(shù)器,只能在常量的表達(dá)式中使用。iota
在const關(guān)鍵字中第一次出現(xiàn)時(shí)為0,然后const中每新增一行常量聲明就將加一計(jì)數(shù)一次。
const ( a = iota // 0 b // 1 c // 2 d // 3 )
常見(jiàn)的使用iota的技巧
使用_
跳過(guò)一些值
const ( a = iota //0 b // 1 _ d // 3 )
在iota中間插入其他值
const ( a = iota // 0 b = 20 c // 2 d // 3 ) const e = iota // 0
多個(gè)iota定義一行
const ( a,b = iota + 1,iota + 2 // 1,2 c,d // 2,3 e,f // 3,4 )
到此這篇關(guān)于淺析Golang中變量與常量的聲明與使用的文章就介紹到這了,更多相關(guān)Golang變量 常量?jī)?nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Go語(yǔ)言leetcode題解953驗(yàn)證外星語(yǔ)詞典示例詳解
這篇文章主要為大家介紹了Go語(yǔ)言leetcode題解953驗(yàn)證外星語(yǔ)詞典示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12Golang程序中使用Prometheus的client_golang庫(kù)
這篇文章主要介紹了Golang程序中使用Prometheus的client_golang庫(kù),Prometheus 是一個(gè)開(kāi)源的監(jiān)控和警報(bào)工具包,用于收集和處理應(yīng)用程序和系統(tǒng)的指標(biāo)數(shù)據(jù)。Prometheus 提供了多種客戶端庫(kù),可以輕松地集成到各種編程語(yǔ)言中2023-04-04細(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-05Golang中處理import自定義包出錯(cuò)問(wèn)題的解決辦法
最近開(kāi)始使用Go/GoLand在import自定義包時(shí)出現(xiàn)各種狀況,下面這篇文章主要給大家介紹了關(guān)于Golang中處理import自定義包出錯(cuò)問(wèn)題的解決辦法,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下2023-11-11解決golang 反射interface{}做零值判斷的一個(gè)重大坑
這篇文章主要介紹了解決golang 反射interface{}做零值判斷的一個(gè)重大坑,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-04-04