Golang 创建枚举类

Golang 创建枚举类

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

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

创建一个Direction的枚举

步骤

步骤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

结论

我们成功编译和执行了一个golang程序,用于创建一个枚举类,并提供了示例。我们创建了各种函数来实现创建枚举类的逻辑。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程