只有常量可以是無(wú)類型的饺著。當(dāng)一個(gè)無(wú)類型的常量被賦值給一個(gè)變量的時(shí)候椰苟,或者出現(xiàn)在有明確類型的變量聲明的右邊,無(wú)類型的常量將會(huì)被隱式轉(zhuǎn)換為對(duì)應(yīng)的類型。
對(duì)于常量面值豫喧,不同的寫法可能會(huì)對(duì)應(yīng)不同的類型石洗。例如0、0.0紧显、0i和\u0000雖然有著相同的常量值讲衫,但是它們分別對(duì)應(yīng)無(wú)類型的整數(shù)、無(wú)類型的浮點(diǎn)數(shù)孵班、無(wú)類型的復(fù)數(shù)和無(wú)類型的字符等不同的常量類型涉兽。同樣,true和false也是無(wú)類型的布爾類型篙程,字符串面值常量是無(wú)類型的字符串類型枷畏。
無(wú)類型常量在使用中比較方便,不需要做類型轉(zhuǎn)化:
package main
const zero float32 = 0.0
const zeroV2 = 0.0
func main() {
//_ = zero < uint64(0.0) // 報(bào)錯(cuò): invalid operation: zero < uint64(0) (mismatched types float32 and uint64)
_ = zeroV2 < uint64(0.0) // 不會(huì)報(bào)錯(cuò)虱饿。
_ = zeroV2 < float64(0.0) // 不會(huì)報(bào)錯(cuò)拥诡。
_ = zeroV2 < int(0.0) // 不會(huì)報(bào)錯(cuò)。
_ = zeroV2 < int64(0.0) // 不會(huì)報(bào)錯(cuò)氮发。
}
zeroV2 是無(wú)類型的浮點(diǎn)數(shù)常量渴肉,那么它可以直接和整數(shù)類型和浮點(diǎn)數(shù)類型進(jìn)行比較。但是確定類型的常量就無(wú)法做到爽冕,比如zero 這個(gè)常量仇祭。
部分資料來(lái)源于:https://cloud.tencent.com/developer/article/1765937