常量的定义
- 常量的值在编译时就已经确定
- 常量的定义格式与变量基本相同
- 等号右侧必须是常量或常量表达式
- 常量表达式中的函数必须是内置函数
package main
import "fmt"
// 常量定义
const a int = 1
const b = 'A'
// 常量组
const (
c = a
d = a + 2
e, f = 1, 'B'
)
func main() {
fmt.Println(a) // 1
fmt.Println(b) // 65
fmt.Println(c) // 1
fmt.Println(d) // 3
fmt.Println(e) // 1
fmt.Println(f) // 66
}
常量的初始化规则与枚举
- 在定义常量组时,如果不提供初始值,将使用上一行的表达式。(如果要使用该规则,要求每一行的常量个数相同)
package main
import "fmt"
// 常量组
const (
c = 1
d
e
)
func main() {
fmt.Println(c) // 1
fmt.Println(d) // 1
fmt.Println(e) // 1
}
表达式与常量表达式的区别在于常量表达式的值是确定的,可知的。
-iota
是常量的计数器,从0开始,常量组中每定义一个常量,则递增加1.
通过初始化规则与iota
可以达到枚举的效果;
每遇到一个const
关键字,iota
就会重置为0.
package main
import "fmt"
// 常量组
const (
a = 'A' // 此时iota=0
b // 继承A的表达式'A',iota=1
c // 继承A的表达式'A',iota=2
d = iota // 继承A的表达式'A',iota=3
)
const (
e = iota // 遇到新的const,iota=0
)
func main() {
fmt.Println(a) // 65
fmt.Println(b) // 65
fmt.Println(c) // 65
fmt.Println(d) // 65
fmt.Println(e) // 0
}