常量,一經定義不可更改的量。功能角度看,當出現不需要被更改的資料時,應該使用常量進行儲存,例如圓周率。從語法的角度看,使用常量可以保證資料,在整個執行期間內,不會被更改。例如當預處理器的架構型別,可以保證不被更改。
語法如下
const 常量名 《可選的型別》 = 常量值
const c1 int = 1000
go語言中,識別符號(常量名)是否大小寫,取決於是否需要在匯出時被識別。常量的值僅僅支援,基礎型別,字串,字元,整型,浮點,布林。
型別可以通過值推導出來,大多數情況可以省略型別,例如
const c2 = 1000
除非你想使用例如,int8, byte,float32這些非預設型別時,需要指定型別,例如
const c3 int16 = 1000
可以一行定義多個常量,例如:
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。
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
編譯時確定,因此不能使用變數為其賦值。可以使用,確定的字面量,字面量運算,內建函式運算,其他定義常量,這些在編譯時可以確定的內容為常量賦值,演示為:
const c1 = "hank"
const (
c2 = c1
c3 = 42 + 1024
c4 = len("hank")
)
以上語法都可以!
一家之言,歡迎討論!
GO語言中的常量和GO的 列舉
常量是乙個簡單值的識別符號,一旦定義不能改變,常量中的值只能是布林,數字型 整數型 浮點型和複數 和字串型。go語言常量中不要全部大寫,因為go語言中的大小寫是有含義的,比如首字母大寫代表public 常量的定義 1 顯式型別 const 常量名 型別 值 const path string www...
Go語言的常量
go語言的常量是一種表示式,常量可以保證在編譯階段就計算出表示式的值。所有的常量本質上都屬於基本型別 數字 布林型 字串等。go語言的常量定義與變數類似,只不過使用了const關鍵字修飾,但不能使用短變數宣告關鍵字 來定義常量。對於常量運算元,所有數 算 邏輯運算和比較運算的結果依然是常量,常量的轉...
Go 語言常量
常量是乙個簡單值的識別符號,在程式執行時,不會被修改的量。常量中的資料型別只可以是布林型 數字型 整數型 浮點型和複數 和字串型。const identifier type value 顯式型別定義 const b string abc 隱式型別定義 const b abc const name1,...