四、go 常量和枚举
一、常量
定义常量也可以不指定类型,会自动判断类型使用
func consts() {
const filename = "file.txt"
const a, b = 3, 4
var c int
c = int(math.Sqrt(a*a + b*b))
fmt.Println(filename, c)
}
也可以把多个常量放在 const()
中
func consts() {
const (
filename = "file.txt"
a, b = 3, 4
)
fmt.Println(filename, a, b)
}
二、枚举
1. 普通枚举类型
go
没有专门用来做枚举的关键字,所以使用const
的方式实现枚举
func enums() {
const (
cpp = 0
java = 1
python = 2
golang = 3
)
fmt.Println(cpp, java, python, golang) // 0 1 2 3
}
2. 自增枚举类型
go
提供iota
表示这组const
值是自增的,实现更方便的定义枚举
func enums() {
const (
cpp = iota
java
python
golang
)
fmt.Println(cpp, java, python, golang) // 0 1 2 3
}
使用下划线_
,忽略某个值
func enums() {
const (
cpp = iota
_
python
golang
)
fmt.Println(cpp, python, golang) // 0 2 3
}
iota
其实是一个表达式,有更加复杂的用法
func enums() {
const (
b = 1 << (10 * iota) // << 小数点不变,数字左移位运算:1左移位数(10*0)=0
kb // 1左移位数(10*1)= 10,左移10位,就是10000000000,十进制就是1024
mb
gb
tb
pb
)
// b, kb, mb, gb, tb, pb
fmt.Println(b, kb, mb, gb, tb, pb)
}