go语言中的枚举及示例代码

2023-06-01 00:00:00 语言 示例 枚举

在go语言中是没有枚举这种数据类型的,但是Go有一个关键字iota可以将const变成枚举。

在go语言中,使用const配合iota声明枚举相当简单,

只需将相似的项目const分组并使用iota关键字即可。


例如,要声明常量:

 const Monday = 1
 const Tuesday = 2

枚举是通过将常量放入括号中来形成的。例如 :

 const ( 
    Monday = 1
    Tuesday = 2
    Wednesday = 3
 )

Golang有一个关键字iota可以将 const 变成枚举。

 const ( 
    Monday = iota
    Tuesday 
    Wednesday
 )


假设您要显式声明常量类型。您可以执行以下操作:


 type Day int
 
 const (
     Monday Day = iota 
     Tuesday 
     Wednesday
     )
     

这段代码将测试枚举:

 package main
 
 import (
         "fmt"
 )
 
 type Day int
 
 const (
         Monday Day = iota //从0开始
         Tuesday
         Wednesday
         Thursday
         Friday
 )
 
 func main() {
         fmt.Println(Monday) // 应该返回 0
         fmt.Println(Friday) // 应该打印 4
 }

输出 :

0
4


添加一个变量和一个方法来打印出字符串值而不是 iota。

  // [...] 是告诉 Go 解释器/编译器计算数组大小
 var days = [...]string {"Monday","Tuesday","Wednesday","Thursday","Friday",}
 func (day Day) String() string {
    return days[day]
 }

下面的代码将打印出字符串中的枚举。

 package main
 
 import (
         "fmt"
 )
 
 type Day int
 
 const (
         Monday Day = iota //从0开始
         Tuesday
         Wednesday
         Thursday
         Friday
 )
 
 // [...] 是告诉 Go 解释器/编译器计算数组大小
 var days = [...]string {"Monday","Tuesday","Wednesday","Thursday","Friday",}
 
 func (day Day) String() string {
    return days[day]
 }
 
 func main() {
         fmt.Println(Monday) //应该打印周一
         fmt.Println(Friday) // 应该打印周五
 }

输出 :

Monday
Friday

相关文章