2 回答

TA貢獻1862條經(jīng)驗 獲得超7個贊
第一個i := 1
稱為短變量聲明。它是帶有初始化表達式但沒有類型的常規(guī)變量聲明的簡寫:
var IdentifierList = ExpressionList
您不指定 的類型i
,但i
將具有基于某些規(guī)則的類型。它的類型將被自動推斷。在這種情況下,它將是類型的,int
因為初始化表達式1
是一個無類型的整數(shù)常量,其默認(rèn)類型是int
,所以當(dāng)需要類型時(例如,它用于短變量聲明),int
將推導(dǎo)出類型。
所以 Go 是靜態(tài)類型的。這意味著變量將具有靜態(tài)類型,并且在運行時存儲在其中的值將始終為該類型。靜態(tài)類型并不意味著您必須顯式指定靜態(tài)類型,它只是意味著變量必須具有靜態(tài)類型 - 在編譯時決定 - 即使您使用短變量聲明并且沒有指定它也滿足哪個條件。
請注意,如果使用var
關(guān)鍵字聲明變量,也可以省略類型:
var i = 1
在這種情況下,類型也將從初始化表達式的類型中推導(dǎo)出來。
如果存在類型,則為每個變量指定該類型。否則,每個變量都會在賦值中被賦予相應(yīng)的初始化值的類型。如果該值是無類型常量,則首先將其轉(zhuǎn)換為其默認(rèn)類型;如果它是一個無類型的布爾值,它首先被轉(zhuǎn)換為 type
bool
。預(yù)聲明的值nil
不能用于初始化沒有顯式類型的變量。
- 2 回答
- 0 關(guān)注
- 196 瀏覽
添加回答
舉報