常量是在程序运行期间不可修改的值。在 Go 语言中,常量使用 const 关键字进行定义。常量的值必须在编译时确定,并且类型可以是数字、字符串或布尔值。

常量的声明

常量的声明方式为 const 常量名 类型 = 值,例如:

const Pi float64 = 3.14159

常量名通常使用大写字母,以便与变量区分。如果没有指定类型,Go 语言会自动推断其类型。例如:

const name = "Alice"

在常量组中,如果不指定类型和初始值,则默认和上一个常量的类型和值相同。例如:

const (
    a = 1
    b
    c
)

在此常量组中,bc 的类型和值都和 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 关键字进行定义,可以是数字、字符串或布尔值。常量表达式可以包括数字、字符串和布尔值的字面值,以及常量之间的运算结果。在常量组中,如果不指定类型和初始值,则默认和上一个常量的类型和值相同。常量的枚举可以通过一组有序的常量来实现。