正如名稱“ CONSTANTS”所暗示的意思是固定的,在編程語(yǔ)言中也是如此,即,一旦定義了常量的值,就無(wú)法再對(duì)其進(jìn)行修改。常量可以有任何基本數(shù)據(jù)類型,例如整數(shù)常量,浮點(diǎn)常量,字符常量或字符串文字。
如何聲明?
常量就像變量一樣聲明,但是使用const 關(guān)鍵字作為前綴來(lái)聲明具有特定類型的常量。不能使用:=語(yǔ)法聲明。
package main import "fmt" const PI = 3.14 func main() { const GFG = "nhooo" fmt.Println("Hello", GFG) fmt.Println("Happy", PI, "Day") const Correct= true fmt.Println("Go rules?", Correct) }
輸出:
Hello nhooo Happy 3.14 Day Go rules? true
未類型化和類型化的數(shù)字常量:
類型化常量的工作方式就像不可變變量只能與相同類型互操作,而未類型化常量的工作方式就像文字常量可以與相似類型互操作。可以在Go中使用或不使用類型來(lái)聲明常量。下面的示例顯示已命名和未命名的類型化和未類型化的數(shù)字常量。
const untypedInteger = 123 const untypedFloating typed = 123.12 const typedInteger int = 123 const typedFloatingPoint float64 = 123.12
以下是Go語(yǔ)言中的常量列表:
數(shù)值常量(整數(shù)常量,浮點(diǎn)常量,復(fù)數(shù)常量)
字符串字面量
布爾常量
數(shù)值常量:
數(shù)值常量是高精度值。Go是一種靜態(tài)類型的語(yǔ)言,不允許混合數(shù)字類型的操作。您不能將float64添加到int,甚至不能將int32添加 到int。雖然,寫(xiě)1e6 * time.Second 或math.Exp(1)甚至 1 <<('\ t'+ 2.0) 都是合法的。在Go中,常量與變量不同,其行為類似于常規(guī)數(shù)字。
數(shù)值常量可以是3種,即整數(shù),浮點(diǎn)數(shù),復(fù)數(shù)
整數(shù)常量:
前綴指定基數(shù):十六進(jìn)制為0x或0X,八進(jìn)制為0,十進(jìn)制為0。
整數(shù)字面量也可以具有后綴,分別是U(大寫(xiě))和L(大寫(xiě))的組合,分別表示無(wú)符號(hào)和長(zhǎng)整數(shù)。
它可以是十進(jìn)制,八進(jìn)制或十六進(jìn)制常量。
一個(gè)int最多可以存儲(chǔ)64位整數(shù),有時(shí)更少。
以下是整數(shù)常量的一些示例:
85 /* decimal */ 0213 /* octal */ 0x4b /* 十六進(jìn)制 */ 30 /* int */ 30u /* unsigned int */ 30l /* long */ 30ul /* unsigned long */ 212 /* 合法 */ 215u /* 合法 */ 0xFeeL /* 合法 */ 078 /* 非法的:8不是八進(jìn)制數(shù)字 */ 032UU /* 非法的:不能重復(fù)后綴 */
復(fù)數(shù)常量:
復(fù)數(shù)常量的行為與浮點(diǎn)常量非常相似。它是整數(shù)常數(shù)(或參數(shù))的有序?qū)?/em> 或 實(shí)數(shù)對(duì),并且該常數(shù)用逗號(hào)分隔,并且該對(duì)包含在括號(hào)之間。第一個(gè)常數(shù)是實(shí)部,第二個(gè)常數(shù)是虛部。復(fù)數(shù)常量COMPLEX * 8使用8個(gè)字節(jié)的存儲(chǔ)空間。
(0.0, 0.0) (-123.456E+30, 987.654E-29)
浮動(dòng)類型常量:
浮點(diǎn)型常量具有一個(gè)整數(shù)部分,一個(gè)小數(shù)點(diǎn),一個(gè)小數(shù)部分和一個(gè)指數(shù)部分。
可以用十進(jìn)制或指數(shù)形式表示浮點(diǎn)常量。
雖然用十進(jìn)制形式表示,必須包含小數(shù)點(diǎn),指數(shù),或兩者兼而有之。
并且在使用指數(shù)形式表示時(shí),必須包括整數(shù)部分,小數(shù)部分或兩者。
以下是浮點(diǎn)類型常量的示例:
3.14159 /* 合法 */ 314159E-5L /* 合法 */ 510E /* 非法:不完整的指數(shù) */ 210f /* 非法:沒(méi)有小數(shù)或指數(shù) */ .e55 /* 非法:缺少整數(shù)或分?jǐn)?shù) */
字符串文字
Go支持兩種類型的字符串文字,即“”(雙引號(hào)樣式)和“”(反引號(hào))。
字符串可以級(jí)聯(lián)以+和+ =運(yùn)算符。
字符串包含與字符字面量相似的字符:純字符,轉(zhuǎn)義序列和通用字符,這是無(wú)類型的。
字符串類型的零值是空白字符串,可以用或以文字表示。 " " ''
通過(guò)使用==,!=和(用于比較相同類型)等運(yùn)算符,可比較字符串類型
語(yǔ)法
type _string struct { elements *byte // 底層字節(jié) len int //字節(jié)數(shù) }
顯示字符串文字的示例:
"hello, nhooo"
"hello, \
nhooo"
"hello, " "geeks" "forgeeks"
在這里,以上所有三個(gè)語(yǔ)句都是相似的,即它們沒(méi)有任何特定的類型。
例:
package main import "fmt" func main() { const A= "GFG" var B = "nhooo" //拼接字符串 var helloWorld = A+ " " + B helloWorld += "!" fmt.Println(helloWorld) //比較字符串 fmt.Println(A == "GFG") fmt.Println(B < A) }
輸出:
GFG nhooo! true false
布爾常量:
布爾常量類似于字符串常量。它應(yīng)用與字符串常量相同的規(guī)則,不同之處僅在于它具有兩個(gè)未類型化的常量true和false。
package main import "fmt" const Pi = 3.14 func main() { const trueConst = true type myBool bool var defaultBool = trueConst // 允許 var customBool myBool = trueConst // 允許 // defaultBool = customBool // 不允許 fmt.Println(defaultBool) fmt.Println(customBool) }
輸出:
true true