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语言程序来创建枚举类以及示例。我们创建了各种函数来实现创建枚举类的逻辑。
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP