溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

go語(yǔ)言中的const是什么?

發(fā)布時(shí)間:2020-05-23 15:33:28 來(lái)源:億速云 閱讀:334 作者:鴿子 欄目:編程語(yǔ)言

const聲明為常量提供名稱,即在編譯時(shí)固定的值。常量的值必須是數(shù)字,字符串或布爾值。

Go語(yǔ)言中的常量使用關(guān)鍵字 const 定義,用于存儲(chǔ)不會(huì)改變的數(shù)據(jù),常量是在編譯時(shí)被創(chuàng)建的,即使定義在函數(shù)內(nèi)部也是如此,并且只能是布爾型、數(shù)字型(整數(shù)型、浮點(diǎn)型和復(fù)數(shù))和字符串型。

由于編譯時(shí)的限制,定義常量的表達(dá)式必須為能被編譯器求值的常量表達(dá)式。

常量的定義格式和變量的聲明語(yǔ)法類似:const name [type] = value,例如:

const pi = 3.14159 // 相當(dāng)于 math.Pi 的近似值

在Go語(yǔ)言中,你可以省略類型說(shuō)明符 [type],因?yàn)榫幾g器可以根據(jù)變量的值來(lái)推斷其類型。

顯式類型定義: const b string = "abc"

隱式類型定義: const b = "abc"

常量的值必須是能夠在編譯時(shí)就能夠確定的,可以在其賦值表達(dá)式中涉及計(jì)算過(guò)程,但是所有用于計(jì)算的值必須在編譯期間就能獲得。

正確的做法:

const c1 = 2/3

錯(cuò)誤的做法:

const c2 = getNumber() // 引發(fā)構(gòu)建錯(cuò)誤: getNumber() 用做值

和變量聲明一樣,可以批量聲明多個(gè)常量:

const (
    e  = 2.7182818
    pi = 3.1415926
)

所有常量的運(yùn)算都可以在編譯期完成,這樣不僅可以減少運(yùn)行時(shí)的工作,也方便其他代碼的編譯優(yōu)化,當(dāng)操作數(shù)是常量時(shí),一些運(yùn)行時(shí)的錯(cuò)誤也可以在編譯時(shí)被發(fā)現(xiàn),例如整數(shù)除零、字符串索引越界、任何導(dǎo)致無(wú)效浮點(diǎn)數(shù)的操作等。

常量間的所有算術(shù)運(yùn)算、邏輯運(yùn)算和比較運(yùn)算的結(jié)果也是常量,對(duì)常量的類型轉(zhuǎn)換操作或以下函數(shù)調(diào)用都是返回常量結(jié)果:len、cap、real、imag、complex 和 unsafe.Sizeof。

以上就是golang 中const是什么的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注億速云其它相關(guān)文章!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI