Go語言中的常量

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 常量的作用

  • 將特殊的值,語義化。使用時,可以知道其具體含義。
  • 數據的集中管理,更改常量定義,即可完成全部的修改。
  • 保證不被程序的其他代碼所更改。

完!

原文出自:小韓說課
微信關注:小韓說課
小韓說課

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章