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