Go 语言常量
正如名称“ CONSTANTS”所暗示的意思是固定的,在编程语言中也是如此,即,一旦定义了常量的值,就无法再对其进行修改。常量可以有任何基本数据类型,例如整数常量,浮点常量,字符常量或字符串文字。
如何声明?
常量就像变量一样声明,但是使用const 关键字作为前缀来声明具有特定类型的常量。不能使用:=语法声明。
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
未类型化和类型化的数字常量:
类型化常量的工作方式就像不可变变量只能与相同类型互操作,而未类型化常量的工作方式就像文字常量可以与相似类型互操作。可以在Go中使用或不使用类型来声明常量。下面的示例显示已命名和未命名的类型化和未类型化的数字常量。
const untypedInteger = 123 const untypedFloating typed = 123.12 const typedInteger int = 123 const typedFloatingPoint float64 = 123.12
以下是Go语言中的常量列表:
数值常量(整数常量,浮点常量,复数常量)
字符串字面量
布尔常量
数值常量:
数值常量是高精度值。Go是一种静态类型的语言,不允许混合数字类型的操作。您不能将float64添加到int,甚至不能将int32添加 到int。虽然,写1e6 * time.Second 或math.Exp(1)甚至 1 <<('\ t'+ 2.0) 都是合法的。在Go中,常量与变量不同,其行为类似于常规数字。
数值常量可以是3种,即整数,浮点数,复数
整数常量:
前缀指定基数:十六进制为0x或0X,八进制为0,十进制为0。
整数字面量也可以具有后缀,分别是U(大写)和L(大写)的组合,分别表示无符号和长整数。
它可以是十进制,八进制或十六进制常量。
一个int最多可以存储64位整数,有时更少。
以下是整数常量的一些示例:
85 /* decimal */ 0213 /* octal */ 0x4b /* 十六进制 */ 30 /* int */ 30u /* unsigned int */ 30l /* long */ 30ul /* unsigned long */ 212 /* 合法 */ 215u /* 合法 */ 0xFeeL /* 合法 */ 078 /* 非法的:8不是八进制数字 */ 032UU /* 非法的:不能重复后缀 */
复数常量:
复数常量的行为与浮点常量非常相似。它是整数常数(或参数)的有序对 或 实数对,并且该常数用逗号分隔,并且该对包含在括号之间。第一个常数是实部,第二个常数是虚部。复数常量COMPLEX * 8使用8个字节的存储空间。
(0.0, 0.0) (-123.456E+30, 987.654E-29)
浮动类型常量:
浮点型常量具有一个整数部分,一个小数点,一个小数部分和一个指数部分。
可以用十进制或指数形式表示浮点常量。
虽然用十进制形式表示,必须包含小数点,指数,或两者兼而有之。
并且在使用指数形式表示时,必须包括整数部分,小数部分或两者。
以下是浮点类型常量的示例:
3.14159 /* 合法 */ 314159E-5L /* 合法 */ 510E /* 非法:不完整的指数 */ 210f /* 非法:没有小数或指数 */ .e55 /* 非法:缺少整数或分数 */
字符串文字
Go支持两种类型的字符串文字,即“”(双引号样式)和“”(反引号)。
字符串可以级联以+和+ =运算符。
字符串包含与字符字面量相似的字符:纯字符,转义序列和通用字符,这是无类型的。
字符串类型的零值是空白字符串,可以用或以文字表示。 " " ''
通过使用==,!=和(用于比较相同类型)等运算符,可比较字符串类型
语法
type _string struct { elements *byte // 底层字节 len int //字节数 }
显示字符串文字的示例:
"hello, nhooo"
"hello, \
nhooo"
"hello, " "geeks" "forgeeks"
在这里,以上所有三个语句都是相似的,即它们没有任何特定的类型。
例:
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
布尔常量:
布尔常量类似于字符串常量。它应用与字符串常量相同的规则,不同之处仅在于它具有两个未类型化的常量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