常量在编译时就已经确定,在程序运行过程中,其值无法改变的量,称为常量。常量存放于内存的数据区。

特点

  • 常量可由内置表达式计算,表达式中的函数必须是内置函数。由于常量的赋值是一个编译期行为,所以右值不能出现任何需要运行期才能得出结果的表达式。
  • 只支持布尔型,数字型,字符串型等非复合类型

    常量的定义

    以大写字母开头的常量在包外可见,小写字母开头的常量在包外不可见。
    1. const CONST [type] = value // 显示
    2. const CONST = value // 隐式

    字面常量

    所谓字面常量(literal),是指程序中硬编码的常量。
    1. -12 // 整型的常量
    2. 3.1415926 // 浮点类型的常量
    3. 3.2+12i // 复数类型的常量
    4. true // 布尔类型的常量
    5. "foo" // 字符串常量

Go语言的字面常量更接近我们自然语言中的常量概念,它是无类型的。只要这个常量在相应类型的值域范围内,就可以作为该类型的常量。

预定义常量

Go语言预定义了这些常量: true、 false和iota。
iota可以被认为是一个可被编译器修改的常量,iota在const关键字出现时,将会被重置为0,const中每新增一行常量声明iota计数一次。

  1. const (
  2. a = iota
  3. b
  4. c
  5. )
  6. fmt.Printf("a=%d b=%d c=%d", a, b, c)