常量(Constant)
在 Go 语言中,常量(constant) 是指在程序运行时不会改变的值。常量可以是基本数据类型(如整数、浮点数、布尔值和字符串),也可以是复合类型。常量在编译时就确定其值,并且在整个程序生命周期中保持不变。
常量的特性
- 定义常量:使用
const
关键字定义常量,常量值必须在编译时已知。 - 类型推断:常量可以省略类型,Go 会根据右边的值自动推断类型。
- 数值常量:数值常量没有确定类型,直到被赋值给特定类型的变量。
- 多重常量声明:可以同时声明多个常量。
- 常量表达式:常量可以使用编译期计算的表达式。
示例代码
// 定义常量
const Pi = 3.14159
const Hello = "Hello, World!"
// 同时声明多个常量
const (
A = 1
B = 2
)
// 类型推断
const Greeting = "Hello" // Go 自动推断为 string 类型
// 常量表达式
const C = A + B // 常量表达式,结果为 3
常量可以进行的操作
- 用于表达式:常量可以参与编译期的计算表达式。
- 枚举值:常量在 Go 中常用于定义枚举类型。
- 隐式类型转换:常量可以没有类型,直到赋值给变量时才确定其类型。
示例:枚举的使用
Go 语言没有 enum
关键字,但可以使用常量模拟枚举。
// 使用 iota 模拟枚举
const (
Sunday = iota // iota 从 0 开始,每行自动递增
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
)
fmt.Println(Sunday, Monday, Tuesday) // 输出 0 1 2
特别注意
iota
的使用:iota
是 Go 语言中的常量生成器,用于生成一组连续值。它在常量声明块中从 0 开始逐行递增,非常适合用于枚举值。- 隐式类型:未指定类型的常量可以根据上下文自动推断类型,只有在赋值时才会绑定到具体的类型。
- 不能修改常量:常量一旦声明,值不能被更改,因此常量通常用于那些在程序运行期间始终保持不变的值。
示例:未指定类型的常量
const x = 42 // 未指定类型
var y int = x // 自动推断为 int
var z float64 = x // 自动推断为 float64
总结
- 常量 是程序中不会改变的值,使用
const
关键字定义,常用于表达固定值或枚举值。 - 常量可以省略类型,直到它被用于某个特定类型的上下文时才会确定类型。
- 常量一旦声明不能修改,适合用于那些在编译期已知并且在程序运行过程中不变的值。