首页 > 编程笔记 > Go语言笔记

Go语言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)
}

声明:《Go系列教程》为本站“54笨鸟”官方原创,由国家机构和地方版权局所签发的权威证书所保护。