官术网_书友最值得收藏!

2.2 常量

常量的值不可變更。原因在于它的值在編譯期已經(jīng)確定,不像變量那樣可以在運行時進行修改。既然常量的值在編譯期就確定了,那么賦值動作只能是一次性的,也就沒有必要將聲明和賦值動作拆開。因此,Go語言要求常量的聲明和賦值同時完成。

2.2.1 常量的聲明

聲明一個常量,應該使用const關鍵字,同時為常量賦值。一個簡單的常量定義的實例如下:

    const a = 10

由于Go語言特有的變量/常量聲明語法,我們可能會混淆其用法。一個常見的問題是,能不能用“:=”來聲明常量。例如,聲明常量能否寫作const a : =10。圖2-5展示了該聲明語句在GoLand中的表現(xiàn)。

圖2-5 使用“:=”聲明常量將會出現(xiàn)編譯錯誤

雖然“:=”是聲明+賦值的縮略形式,但它是“變量聲明+賦值”操作的結(jié)合體(即var+=),因此對于常量const無效。

2.2.2 常量塊的使用

與變量塊類似,多個常量同樣可以提取出const關鍵字,例如:

一般情況下,我們會將業(yè)務意義相關的一組常量提取為一個常量塊。常量塊有一個很有趣的特點:如果多個連續(xù)常量使用相同的表達式賦值,那么可以只為第一個常量賦值,后續(xù)常量只定義常量名稱即可。代碼清單2-4演示了這種用法。

代碼清單2-4 連續(xù)的相同賦值表達式的縮略寫法

執(zhí)行該代碼,其輸出如下:

    10 10 10

可見,a、b、c三個常量都被賦予了相同的值,即10。

2.2.3 常量可以聲明而不使用

只聲明而不使用常量,不會出現(xiàn)編譯錯誤,在GoLand等IDE中,只會出現(xiàn)優(yōu)化提示,如圖2-6所示。

圖2-6 聲明但未被使用的常量,會出現(xiàn)優(yōu)化提示

無論是全局變量,還是常量,在“聲明但未使用”這一點的處理上比較一致,都不會像局部變量那樣直接出現(xiàn)編譯錯誤。那么,這其中的原因是什么呢?

常量未使用是可以被編譯器識別出來的,但是因為常量的值在編譯期就確定了,這意味著如果未被使用,那么多余的語句最多只會有一條,副作用不會太大(局部變量可以不斷進行賦值操作,可能出現(xiàn)很多次無用的賦值語句)。最重要的是,編譯器可以識別常量的冗余,在編譯時會忽略無用的常量。

主站蜘蛛池模板: 南昌县| 隆化县| 柘城县| 博客| 涿州市| 麦盖提县| 吴旗县| 韩城市| 含山县| 深州市| 凤凰县| 高邮市| 徐汇区| 察雅县| 茶陵县| 吉林市| 酉阳| 京山县| 乡宁县| 炎陵县| 宽城| 禹州市| 察雅县| 香河县| 白水县| 乌什县| 福安市| 琼中| 凉城县| 蓬溪县| 专栏| 桦甸市| 四子王旗| 休宁县| 竹溪县| 措勤县| 通海县| 台湾省| 利辛县| 谢通门县| 新乐市|