Go语言创建枚举类程序


枚举将相关的常量组合成单个类型。枚举是一个强大的特性,具有许多应用。然而,与大多数其他编程语言相比,它们在Go语言中的实现方式大相径庭。在本文中,我们将了解如何使用预声明的可标识iota来在Go语言中实现枚举。

IOTA − Iota是一个用于常量的标识符,可以使基于自动递增数字的常量定义更简单。“iota”关键字代表一个从零开始的整数常量。

实现Iota

package main
import "fmt"
const (
   c0 = iota + 1
   c1
   c2
)
func main() {
   fmt.Println(c0, c1, c2) // Print : 1 2 3
}

输出

1 2 3

创建星期几的枚举

算法

步骤1 − 导入fmt包,允许我们在屏幕上打印任何内容。

步骤2 − 创建一个新的数据类型Weekday来存储星期几的整型。

步骤3 − 从索引1开始,为每个星期几声明相关的常量。

步骤4 − 创建一个函数,根据提供的整数值获取星期几的字符串。

步骤5 − 创建一个函数来获取枚举的索引。

步骤6 − 调用main()函数。

步骤7 − 初始化Weekday类型并存储一天。

步骤8 − 通过分别调用getWeekday()和getIndex()函数打印相应的星期几和索引。

示例

在下面的示例中,我们正在为星期几创建枚举。

package main
import "fmt"
type Weekday int

// Declaring related constants for each weekday starting with index 1
const (
   Sunday Weekday = iota + 1
   Monday
   Tuesday
   Wednesday
   Thursday
   Friday
   Saturday
)

// creating a function to get the weekday as string from the integer values provided
func (w Weekday) getWeekday() string{
   return [...]string{"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday",
   "Saturday"} [w-1]
}

// creating a function to get the index of the enum
func (w Weekday) getIndex() int {
   return int(w)
}
func main() {
   var weekday = Sunday
   fmt.Println(weekday)
   fmt.Println(weekday.getWeekday())
   fmt.Println(weekday.getIndex())
}

输出

1
Sunday
1

创建方向枚举

算法

步骤1 − 导入fmt包,允许我们打印任何内容。

步骤2 − 创建一个新的类型Direction来存储从1到7的方向整型。

步骤3 − 为每个方向声明常量作为Direction,并使用iota为常量集编制索引。请注意,第一个方向,即北,索引为iota + 1,即1,后续方向将获得自动递增的值作为索引。

步骤4 − 现在我们需要为Direction类型创建函数。第一个函数返回方向的字符串,我们将其命名为getDirection()。而另一个函数返回枚举索引的整数值,我们将其命名为getIndex()。

步骤5 − 现在调用main()函数,这是程序的主入口点,程序从这里开始执行。

步骤6 − 创建一个新的Direction类型变量,并将其中一个方向作为值存储到其中。

步骤7 − 现在我们可以通过分别调用getDirection()和getIndex()函数打印方向以及对应于该方向的枚举索引。

步骤8 − 使用fmt.Println()函数在屏幕上打印此函数返回的结果。

示例

在下面的示例中,我们正在为方向创建枚举

package main
import "fmt"

// creating a new custom type Direction to store the direction values as integers from 1-4
type Direction int

// Declaring related constants for each direction starting with index 1
const (
   North Direction = iota + 1
   East
   South
   West
)

// creating a function to get the directions as string from the integer values provided
func (d Direction) getDirection() string {
   return [...]string{"North", "East", "South", "West"}[d-1]
}
func (d Direction) getIndex() int {
   return int(d)
}
func main() {
   var d Direction = West
   fmt.Println(d)
   fmt.Println(d.getDirection())
   fmt.Println(d.getIndex())
}

输出

4
West
4

结论

我们已经成功编译并执行了一个Go语言程序来创建枚举类以及示例。我们创建了各种函数来实现创建枚举类的逻辑。

更新于:2023年2月10日

413 次浏览

启动您的职业生涯

完成课程获得认证

开始学习
广告
© . All rights reserved.