上QQ阅读APP看书,第一时间看更新
3.4.1 常量iota
Go语言预定义了true、false和iota三个常量。
● true和false经常与布尔类型一起使用。
● iota是Go语言中预定义的标识符,枚举常量时,它常用于自动生成连续值的序列。可以认为iota是一个自增枚举常量的计数器。iota只能在常量表达式中使用,常常被用于定义一组相关常量,它可以在不显式指定值的情况下自动递增。在每个关键字const出现时,iota都会被重置为0。在下个关键字const出现之前,每出现一次iota,变量的值会在上个值的基础上增加1。
下面的示例代码演示了通过iota定义一个星期中每一天的方式。
//枚举是一种特殊的数据类型,用于定义一组有限的、互不相同的值
//Go语言并不支持关键字enum,但可以使用关键字const创建一组相关的常量,这在概念上类似于枚举
//一组常量的定义方式通常是在关键字const后跟一对圆括号(常量就放在括号内)
//下面是常规的通过枚举的方式定义一个星期中每一天的示例
const (
Monday = 1 + iota //1
Tuesday //2
Wednesday //3
Thursday //4
Friday //5
Saturday //6
Sunday //7
)
fmt.Println(Monday, Tuesday, Saturday) //输出: 1 2 6
在上述示例中,iota的值会依次自动递增,此值从0开始,所以Monday的值是1,Tuesday的值是2,以此类推。
在各种标准库中,为了方便开发人员使用,会预定义一些常量。例如,使用log包输出日志时,自带的log包默认的输入格式是内容和时间。下面的示例提供了几个很简单的输出选项。
const (
Ldate = 1 << iota //日期示例:2022/07/07
Ltime //时间示例:01:23:45
Lmicroseconds //微秒:01:23:45.000000.
Llongfile //路径+文件名+行号:/a/b/c/d.go:10
Lshortfile //文件名+行号:main.go:10
LUTC //UTC时间格式
LstdFlags = Ldate | Ltime //默认
)
func init(){
log.SetFlags(log.Ldate|log.Lshortfile)
}