常量是在程序运行期间不可修改的值。在 Go 语言中,常量使用 const 关键字进行定义。常量的值必须在编译时确定,并且类型可以是数字、字符串或布尔值。
常量的声明
常量的声明方式为 const 常量名 类型 = 值,例如:
const Pi float64 = 3.14159
常量名通常使用大写字母,以便与变量区分。如果没有指定类型,Go 语言会自动推断其类型。例如:
const name = "Alice"
在常量组中,如果不指定类型和初始值,则默认和上一个常量的类型和值相同。例如:
const (
a = 1
b
c
)
在此常量组中,b 和 c 的类型和值都和 a 相同,即 int 类型的值 1。
常量的类型
常量的类型可以是数字、字符串或布尔值。例如:
const (
MaxInt8 int8 = 1<<7 - 1
MinInt8 = -1 << 7
MaxInt16 int16 = 1<<15 - 1
MinInt16 = -1 << 15
MaxInt32 int32 = 1<<31 - 1
MinInt32 = -1 << 31
MaxInt64 int64 = 1<<63 - 1
MinInt64 = -1 << 63
MaxUint8 uint8 = 1<<8 - 1
MaxUint16 uint16 = 1<<16 - 1
MaxUint32 uint32 = 1<<32 - 1
MaxUint64 uint64 = 1<<64 - 1
MaxFloat32 = 3.40282346638528859811704183484516925440e+38
MaxFloat64 = 1.797693134862315708145274237317043567981e+308
Pi = 3.14159265358979323846
True bool = true
False bool = false
Hello string = "hello"
)
在常量的声明中,如果没有指定类型,则根据值自动推断类型。例如:
const (
x = 1 // int 类型
y = 2.0 // float64 类型
z = "hello world" // string 类型
)
常量的表达式
常量可以使用常量表达式进行计算。常量表达式包括数字、字符串和布尔值的字面值,以及常量之间的运算结果。
常量表达式中可以使用算术运算符、比较运算符、逻辑运算符等,例如:
const (
a = 1 + 2 // 等于 3
b = 3 - 4 // 等于 -1
c = 5 * 6 // 等于 30
d = 7 / 3 // 等于 2
e = 8 % 3 // 等于 2
f = (1 + 2) * (3 + 4) // 等于 21
g = true && false // 等于 false
h = true || false // 等于 true
i = !true // 等于 false
)
常量表达式还可以使用函数调用、类型转换等,例如:
const (
a = len("hello") // 等于 5
b = int(3.14) // 等于 3
c = string([]byte{65}) // 等于 "A"
)
常量的枚举
在 Go 语言中,常量的枚举是通过一组有序的常量来实现的。例如:
const (
Monday = iota // 0
Tuesday // 1
Wednesday // 2
Thursday // 3
Friday // 4
Saturday // 5
Sunday // 6
)
在此常量组中,iota 是一个预定义的常量,从 0 开始自动递增。因此,Monday 的值为 0,Tuesday 的值为 1,以此类推。
总结
在 Go 语言中,常量是在程序运行期间不可修改的值。常量使用 const 关键字进行定义,可以是数字、字符串或布尔值。常量表达式可以包括数字、字符串和布尔值的字面值,以及常量之间的运算结果。在常量组中,如果不指定类型和初始值,则默认和上一个常量的类型和值相同。常量的枚举可以通过一组有序的常量来实现。