1 概述
常量,一經定義不可更改的量。功能角度看,當出現不需要被更改的數據時,應該使用常量進行存儲,例如圓周率。從語法的角度看,使用常量可以保證數據,在整個運行期間內,不會被更改。例如當前處理器的架構類型,可以保證不被更改。
語法如下
2 定義單個常量
const 常量名 <可選的類型> = 常量值
const c1 int = 1000
Go語言中,標識符(常量名)是否大小寫,取決於是否需要在導出時被識別。
常量的值僅僅支持,基礎類型,字符串,字符,整型,浮點,布爾。
3 類型推導
類型可以通過值推導出來,大多數情況可以省略類型,例如
const c2 = 1000
除非你想使用例如,int8, byte,float32這些非默認類型時,需要指定類型,例如
const c3 int16 = 1000
4 定義多個常量
可以一行定義多個常量,例如:
const c4, c5 = 42, 1000
也可以使用 const()定義塊,定義多個,每個常量單獨一行,例如
const (
c6 = 42
c7 = 1000
)
推薦使用const()塊語法,一次性定義多個。
const()塊定義時,如果常量未給出定義,則延續上面的定義規則,例如:
const (
c7 = 42
c8 // c8 = 42
c9 // c9 = 42
)
此時,c8, c9, 值都是42。
5 iota迭代定義常量
const配合iota關鍵字使用,可以定義一組由0開始+1迭代的常量
演示語法:
const (
gender_secret = iota
gender_male // = iota
gender_female // = iota
)
此時,三個常量值,分別是,0, 1, 2
iota的規則是:若iota出現在const()中,那麼const()定義的第一行的iota就是0,第二行就是0+1=1,不論iota是否被常量使用。演示如下:
const (
c1 = 42 // iota = 0,雖然未使用iota,但後邊(const()中)有使用,此時iota被初始化爲0,下面每行累加1
c2 = iota // iota = 1,iota繼續累加,使用了iota
c3 = 1024 // iota = 2,同樣未使用,但iota的值繼續累加。c3 被定義爲1024
c4 // iota = 3,c4延續上面的定義c4=1024,iota繼續累加
c5 = iota // iota = 4,iota繼續累加,使用了iota
c6 = iota // iota = 5,iota繼續累加,使用了iota
)
此時結果爲:42, 1, 1024, 1024, 4, 5
6 常量在編譯時確定
編譯時確定,因此不能使用變量爲其賦值。可以使用,確定的字面量,字面量運算,內置函數運算,其他定義常量,這些在編譯時可以確定的內容爲常量賦值,演示爲:
const c1 = "hank"
const (
c2 = c1
c3 = 42 + 1024
c4 = len("hank")
)
以上語法都可以!
7 常量的作用
- 將特殊的值,語義化。使用時,可以知道其具體含義。
- 數據的集中管理,更改常量定義,即可完成全部的修改。
- 保證不被程序的其他代碼所更改。
完!
原文出自:小韓說課
微信關注:小韓說課