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

2.4 常量

Go語言的常量是一個簡單值的標識符,在Go程序運行期間不會被修改。常量中的數(shù)據(jù)類型只可以是布爾類型、數(shù)值類型和字符串類型。Go語言中常量的聲明語法為:

const 常量名 [數(shù)據(jù)類型] = 常量值

常量聲明的關(guān)鍵詞為const,后面跟著常量名(標識符),其中的數(shù)據(jù)類型是可選的,但值不能省略。Go編譯器可以根據(jù)常量的值來推斷它的數(shù)據(jù)類型。常量聲明有顯式聲明和隱式聲明之分:

· 顯式聲明:const myConst string = "hello"。

· 隱式聲明:const myConst = "hello"。

另外,我們可以在一行語句中同時聲明多個同類型的常量,語法如下:

const 常量名1, 常量名2,...,常量名n= 常量值1,常量值2,...,常量值n

下面是一個常量基本用法的示例程序2-11。

示例程序2-11 常量基本用法:chapter02\code07\const.go

在示例程序2-11中,第05行顯式聲明了一個標識符為ver的常量,其值為"1.0.0"。06行隱式聲明了一個標識符為author的常量,其值為"jackwang"。第08行同時聲明了兩個常量a和b,這種聲明和賦值方式可以簡化代碼量。第10~13行的常量用法往往用來模擬枚舉類型。

注意

在Go語言中,常量聲明后可以不使用,編譯器不會因此而報錯。

Go語言并沒有提供枚舉類型,但是可以使用const來模擬枚舉類型。在正式模擬枚舉類型之前,我們先介紹Go語言的自定義類型,其語法為:

type 自定義類型名 類型

下面是用常量模擬枚舉類型的示例程序2-12。

示例程序2-12 用常量模擬枚舉類型:chapter02\code07\enum.go

在示例程序2-12中,第05行用type SEX int8自定義了一個SEX類型。SEX類型是基于int8類型的,因此可以存儲int8數(shù)據(jù)。第06~11行用const定義了兩個SEX類型的常量MAN和FEMALE。第13行const sex = MAN語句定義了一個SEX類型的常量sex,其值為常量值(枚舉值)MAN。第15行打印輸出sex的類型時會輸出類型main.SEX。

在Go語言中,常量可以在函數(shù)外進行聲明,聲明的時候必須要指定常量的值,否則會報錯。

注意

在Go語言中,用常量可以模擬枚舉類型,但是還不是真正的枚舉類型,例如可以給SEX類型的變量賦值2,而不是必須為MAN或者FEMALE。

在Go語言中,還有一種特殊常量iota,可以認為是一個可以被編譯器修改值的常量。iota在const關(guān)鍵字出現(xiàn)時將被重置為0,并在后續(xù)每新增一行常量聲明時使iota計數(shù)加1。

主站蜘蛛池模板: 桓仁| 宣威市| 麻城市| 余干县| 临夏市| 河南省| 那坡县| 南川市| 襄汾县| 长海县| 客服| 宣恩县| 固始县| 南京市| 阿尔山市| 中超| 沭阳县| 台南县| 镇康县| 新疆| 海伦市| 天津市| 灌阳县| 故城县| 潢川县| 米脂县| 赤水市| 栖霞市| 尼勒克县| 诸城市| 荥阳市| 长沙县| 怀集县| 疏勒县| 乃东县| 赣榆县| 嘉兴市| 苍梧县| 思茅市| 钟山县| 鹤山市|