- 深入淺出Go語言核心編程
- 張朝明 李奕鋒 甘海彬
- 780字
- 2024-12-24 10:23:13
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)很多次無用的賦值語句)。最重要的是,編譯器可以識別常量的冗余,在編譯時會忽略無用的常量。
- Learning Python Web Penetration Testing
- Visual C++程序設計教程
- 基于粒計算模型的圖像處理
- 圖解Java數(shù)據(jù)結(jié)構(gòu)與算法(微課視頻版)
- .NET 4.0面向?qū)ο缶幊搪劊夯A篇
- Python進階編程:編寫更高效、優(yōu)雅的Python代碼
- Cassandra Data Modeling and Analysis
- Web程序設計(第二版)
- 你不知道的JavaScript(中卷)
- LabVIEW虛擬儀器程序設計從入門到精通(第二版)
- Learning Android Application Testing
- JavaScript悟道
- iOS Development with Xamarin Cookbook
- 透視C#核心技術:系統(tǒng)架構(gòu)及移動端開發(fā)
- Computer Vision with Python 3