關(guān)于Golang變量初始化/類(lèi)型推斷/短聲明的問(wèn)題
視頻: https://www.bilibili.com/video/BV1Zh411k7iB/

聲明變量同時(shí)初始化
上節(jié)我們了解了三種變量聲明的語(yǔ)法,并且知道未初始化的變量初始值都是其類(lèi)型的零值

其實(shí)只需要在聲明時(shí)賦予初始值,即可進(jìn)行初始化
下面針對(duì)三種變量聲明語(yǔ)法進(jìn)行初始化:
[1] var name type

[2] var name1, name2 type

[3]
var ( name1 type1 name2 type2 )

類(lèi)型推斷
如果變量聲明時(shí)附帶初始值,Go會(huì)自動(dòng)推斷出初始值的類(lèi)型,這時(shí)可以省略掉變量類(lèi)型的聲明:

通過(guò)fmt.Printf函數(shù)和%T標(biāo)記(后面再了解,這里先記下),我們最終得知name變量的類(lèi)型最終推斷為string
疑問(wèn): var pi = 3.14,pi變量的類(lèi)型是什么? 是float32還是float64? 試試便知:

Go會(huì)根據(jù)數(shù)值的精度(precision)來(lái)推斷變量類(lèi)型:
- 整數(shù) ->
int - 浮點(diǎn)數(shù) ->
float64 - 復(fù)數(shù) ->
complex128
有了類(lèi)型推斷(Type inference),我們有能力可以一行聲明多個(gè)不同類(lèi)型的變量:

變量短聲明
Go還提供了一種更加簡(jiǎn)潔的用來(lái)聲明初始化變量的語(yǔ)法,叫做變量短聲明(Short hand declaration)
變量短聲明,使用:=操作符,它有點(diǎn)像一個(gè)海象

利用變量短聲明,再次化簡(jiǎn)上個(gè)例子的代碼:

在Go中,變量不能重復(fù)聲明,否則會(huì)報(bào)錯(cuò)

使用短聲明:=時(shí)也一樣

因?yàn)?strong>短聲明要求左邊至少有一個(gè)未聲明的變量

第二行:=對(duì)于name來(lái)說(shuō)是重新賦值,對(duì)于age來(lái)說(shuō)是聲明并初始化
短聲明還有一個(gè)約束 —— 只能在函數(shù)體內(nèi)使用(后面講到變量作用域時(shí)再討論 =。=)
總結(jié)

到此這篇關(guān)于關(guān)于Golang變量初始化/類(lèi)型推斷/短聲明的問(wèn)題的文章就介紹到這了,更多相關(guān)Golang變量類(lèi)型推斷內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- golang強(qiáng)制類(lèi)型轉(zhuǎn)換和類(lèi)型斷言
- Golang 語(yǔ)言極簡(jiǎn)類(lèi)型轉(zhuǎn)換庫(kù)cast的使用詳解
- golang值類(lèi)型轉(zhuǎn)換成[]uint8類(lèi)型的操作
- golang類(lèi)型轉(zhuǎn)換組件Cast的使用詳解
- Golang中的自定義類(lèi)型之間的轉(zhuǎn)換的實(shí)現(xiàn)(type conversion)
- golang 中string和int類(lèi)型相互轉(zhuǎn)換
- golang的強(qiáng)制類(lèi)型轉(zhuǎn)換實(shí)現(xiàn)
- golang 實(shí)現(xiàn)json類(lèi)型不確定時(shí)的轉(zhuǎn)換
- golang類(lèi)型推斷與隱式類(lèi)型轉(zhuǎn)換
相關(guān)文章
一文教你打造一個(gè)簡(jiǎn)易的Golang日志庫(kù)
這篇文章主要為大家詳細(xì)介紹了如何使用不超過(guò)130行的代碼,通過(guò)一系列g(shù)olang的特性,來(lái)打造一個(gè)簡(jiǎn)易的golang日志庫(kù),感興趣的小伙伴可以了解一下2023-06-06
使用Go語(yǔ)言開(kāi)發(fā)短鏈接服務(wù)的方法
短鏈接一般是通過(guò)映射關(guān)系,將長(zhǎng)長(zhǎng)的一串網(wǎng)址,映射到幾個(gè)字符的短鏈接上,建立好這種映射關(guān)系之后保存到數(shù)據(jù)庫(kù)里,用戶(hù)每次訪問(wèn)短鏈接的時(shí)候,這篇文章主要介紹了使用Go語(yǔ)言開(kāi)發(fā)一個(gè)短鏈接服務(wù),需要的朋友可以參考下2024-03-03
Hugo 游樂(lè)場(chǎng)內(nèi)容初始化示例詳解
這篇文章主要為大家介紹了Hugo 游樂(lè)場(chǎng)內(nèi)容初始化示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02
如何使用Golang發(fā)送Get和Post請(qǐng)求
這篇文章主要給大家介紹了關(guān)于如何使用Golang發(fā)送Get和Post請(qǐng)求的相關(guān)資料,Go語(yǔ)言(Golang)的標(biāo)準(zhǔn)庫(kù)提供了處理HTTP請(qǐng)求的功能,這使得將Go用于web應(yīng)用程序變得非常容易,需要的朋友可以參考下2023-06-06
Golang?sync.Once實(shí)現(xiàn)單例模式的方法詳解
Go?語(yǔ)言的?sync?包提供了一系列同步原語(yǔ),其中?sync.Once?就是其中之一。本文將深入探討?sync.Once?的實(shí)現(xiàn)原理和使用方法,幫助大家更好地理解和應(yīng)用?sync.Once,需要的可以參考一下2023-05-05
golang使用go mod導(dǎo)入本地包和第三方包的方式
這篇文章主要介紹了golang使用go mod導(dǎo)入本地包和第三方包的方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-01-01

