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

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

其實只需要在聲明時賦予初始值,即可進行初始化
下面針對三種變量聲明語法進行初始化:
[1] var name type

[2] var name1, name2 type

[3]
var ( name1 type1 name2 type2 )

類型推斷
如果變量聲明時附帶初始值,Go會自動推斷出初始值的類型,這時可以省略掉變量類型的聲明:

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

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

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

利用變量短聲明,再次化簡上個例子的代碼:

在Go中,變量不能重復(fù)聲明,否則會報錯

使用短聲明:=時也一樣

因為短聲明要求左邊至少有一個未聲明的變量

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

到此這篇關(guān)于關(guān)于Golang變量初始化/類型推斷/短聲明的問題的文章就介紹到這了,更多相關(guān)Golang變量類型推斷內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Go語言服務(wù)器開發(fā)之客戶端向服務(wù)器發(fā)送數(shù)據(jù)并接收返回數(shù)據(jù)的方法
這篇文章主要介紹了Go語言服務(wù)器開發(fā)之客戶端向服務(wù)器發(fā)送數(shù)據(jù)并接收返回數(shù)據(jù)的方法,實例分析了客戶端的開發(fā)技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-02-02
Go結(jié)合反射將結(jié)構(gòu)體轉(zhuǎn)換成Excel的過程詳解
這篇文章主要介紹了Go結(jié)合反射將結(jié)構(gòu)體轉(zhuǎn)換成Excel的過程詳解,大概思路是在Go的結(jié)構(gòu)體中每個屬性打上一個excel標簽,利用反射獲取標簽中的內(nèi)容,作為表格的Header,需要的朋友可以參考下2022-06-06
淺析go語言如何實現(xiàn)協(xié)程的搶占式調(diào)度的
go語言通過GMP模型實現(xiàn)協(xié)程并發(fā),為了避免單協(xié)程持續(xù)持有線程導(dǎo)致線程隊列中的其他協(xié)程饑餓問題,設(shè)計者提出了一個搶占式調(diào)度機制,本文會基于一個簡單的代碼示例對搶占式調(diào)度過程進行深入講解剖析2024-04-04
Golang?range?slice?與range?array?之間的區(qū)別
這篇文章主要介紹了Golang?range?slice?與range?array?之間的區(qū)別,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下2022-07-07

