相对于变量, 常量是恒定不变的值, 经常用于定义程序运行期间不会改变的那些值.
常量的定义使用
常量的声明与变量的声明很相似, 只是把 var
换成了 const
, 常量在定义的时候必须赋值.
在程序开发中, 我们用常量存储一直不会发生变化的数据. 例如: Π
, 身份证号码等. 像这类数据, 在整个程序运行中都是不允许发生改变的.
package main
import "fmt"
func main(){
const pi float64 = 3.14159
// pi = 4.56 // 报错, 常量不允许修改
fmt.Println(pi)
// 自动推导类型
const e = 2.7182 // 注意: 不是使用 :=
fmt.Println("e =", e)
}
在声明了 pi
和 e
这两个变量之后, 在整个程序运行期间它们的值就都不能发生变化了.
多个常量同时声明
const (
pi = 3.14159
e = 2.7182
)
const
同时声明多个常量时, 如果省略了值则表示和上面一行的值是相同的.
const (
n1 = 99
n2 // n2 = 99
n3 // n3 = 99
)
上面的示例中, 常量 n1
、n2
、n3
都是99
.
字面常量
所谓字面常量, 是指程序中硬编码的常量.
123 // 整数类型的常量
3.14159 // 浮点类型的常量
3.2+12i // 复数类型的常量
true // 布尔类型的常量
"foo" // 字符串类型的常量
iota 枚举
iota
是go语言的常量计数器, 只能在常量的表达式中使用. 它用于生成一组以相似规则初始化的常量, 但是不用每一行都写一遍初始化表达式.
注意:在一个const
声明语句中, 在第一个声明的常量所在的行, iota
将会被置为0, 然后在每一个有常量声明的行加一.
iota
可以理解为const
语句块中的行索引, 使用iota
能简化定义, 在定义枚举时很有用.
看几个例子:
可以只写一个iota
package main
import "fmt"
func main(){
const (
a = iota // 0
b // 1
c // 2
d // 3
)
fmt.Println(a, b, c, d)
}<