Golang枚举的具体实现(附带实例)
在 Go 语言中,没有直接提供枚举类型的内置支持,没有 enum 关键字,需要使用 const 关键字和 iota 常量生成器定义枚举。
iota 常量生成器用于生成一组以相似规则初始化的常量,使用 const 关键字和 iota 常量生成器定义枚举的语法格式如下:
下面演示如何使用 const 关键字和 iota 常量生成器定义枚举。代码如下:
使用 const 关键字和 iota 常量生成器不仅可以生成每次增加1的枚举值,还可以实现枚举常量值生成器。实现枚举常量值生成器的代码如下:
iota 常量生成器用于生成一组以相似规则初始化的常量,使用 const 关键字和 iota 常量生成器定义枚举的语法格式如下:
const(
identifier1 type = iota
identifier2
identifier3
…
)
使用 const 关键字和 iota 常量生成器定义枚举,其中 identifier1 对应的值为 0。下面演示如何使用 const 关键字和 iota 常量生成器定义枚举。代码如下:
package main
import (
"fmt"
)
func main(){
const(
identifier1 int = iota
identifier2
identifier3
)
fmt.Println("identifier1 =", identifier1, "identifier2 =", identifier2, "identifier3 =", identifier3)
}
运行结果如下:
identifier1 = 0
identifier2 = 1
identifier3 = 2
使用 const 关键字和 iota 常量生成器不仅可以生成每次增加1的枚举值,还可以实现枚举常量值生成器。实现枚举常量值生成器的代码如下:
package main
import (
"fmt"
)
func main(){
const(
B = 1 << (10 * iota)
KB
MB
)
fmt.Println("1B =", B, "B\n1KB =", KB, "B\n1MB =", MB, "B")
}
运行结果如下:
1B = 1 B
1KB = 1024 B
1MB = 1048576 B
ICP备案:
公安联网备案: