Golang中我们会使用const来声明常量
相对于变量、常量是一个恒定不变的值,简化定义常用于定义枚举
不同于变量的是--常量在定义的同时是必须要给其赋值的
目录
常量的使用
当然我们也可以一次声明多个常量:
package main
import "fmt"
func main() {
const (
num = 10
num2 = 20
num3 = 30
num4 = 40
)
fmt.Println(num, num2, num3, num4)
}
如果我们声明常量时--省略了之后的常量赋值,那么表示和上一行常量的值相同:
package main
import "fmt"
func main() {
const (
num = 10
num2
num3
num4 = 30
num5
)
fmt.Println(num, num2, num3, num4, num5)
}
iota的使用与iota在声明中插队
iota是Go语言的常量计数器,只能在常量的表达式中使用
我们来看一下它的定义:
iota在const关键字出现时将被重置为0,const中每新增一行常量声明,将使iota计数一次
iota可以理解为const语句块中的行索引
这些话有些官方了,我们可以理解为const只要出现,那么iota就会初始化为0,且形成索引递增加1
package main
import "fmt"
func main() {
const (
num = iota
num2
num3
// 匿名变量 _
_
num4
num5 = 30
num6
)
fmt.Println(num, num2, num3, num4, num5, num6)
}
多个iota定义在一行
可能一眼看过去不是那么容易理解,我们可以回想一下iota的定义:
iota在const关键字出现时将被重置为0,const中每新增一行常量声明,将使iota计数一次
所以iota不是以常量的数量来向上读取并计数的,而是一行一行的向上读取并计数(以行为单位)
func main() {
const (
num, num1 = iota + 10, iota + 11
num2, num3
num4, num5
)
fmt.Println(num, num1, num2, num3, num4, num5)
}