Golang 通过字符串值查找枚举
在golang中,通过给定的字符串查找对应于该枚举(enum)的枚举常量是必要的。可以使用switch语句或一串if-else语句来实现。另一种方法是使用映射,其中枚举常量作为值,字符串值作为键。现在可以通过它们的字符串形式快速有效地查找枚举常量。让我们通过各种示例来查找go编程语言中的枚举字符串值。
方法1:使用字符串表示
在这个示例中,我们将看到如何使用字符串表示来查找枚举的字符串值。使用const关键字将Cloth类型定义为一个包含值Saree、Kurti和Shrug的枚举。然后将衣服的字符串表示与枚举值连接在一起放入映射中。main函数在clothes映射中搜索”saree”的枚举值,并将其打印到终端。让我们通过示例和算法来了解它的执行。
语法
Map[]
映射是Golang中预先构建的数据结构,它可以实现键值对的存储和检索。映射的键必须是唯一的,其值可以是任何数据类型。可以使用映射来高效地存储和检索数据,它们被实现为哈希表。可以使用[]运算符来添加、检索和删除项目,并使用make()方法和map关键字来构造映射。
步骤
- 步骤1 - 创建一个main包,并在程序中声明fmt(format包)包,其中main产生可执行示例,fmt帮助格式化输入和输出。
-
步骤2 - 使用const关键字定义一个新的枚举类型,称为Clothes。
-
步骤3 - 将整数值0、1和2分别赋给枚举值Saree、Kurti和Shrug。
-
步骤4 - 创建一个名为clothes的映射,将衣物的枚举值与其字符串表示关联起来。
-
步骤5 - 在main函数中使用clothes映射来查找特定衣物的枚举值,使用其字符串表示。
-
步骤6 - 使用fmt.Println()函数在控制台上打印枚举值,其中ln表示新行。
示例
package main
import "fmt"
type Clothes int //create type clothes
const (
Saree Clothes = iota
Kurti
Shrug
)
var clothes = map[string]Clothes{ //create a map to link enumeration values with string representation
"saree": Saree,
"kurti": Kurti,
"shrug": Shrug,
}
func main() {
cloth := clothes["saree"]
fmt.Println("The enum value of particular cloth is:")
fmt.Println(cloth) //print the enum value
}
输出
The enum value of particular cloth is:
0
方法2:使用用户定义的函数
这个示例定义了一个名为clothStruct的结构体的name和enum字段。将潜在的衣服表示为clothList数组的clothStruct,并附上它们的名称和枚举值。这种策略还提供了根据需要扩展结构体字段或方法的选项。
步骤
- 第一步 − 创建一个名为main的包,并在程序中声明fmt(格式化包)包,其中main生成可执行的示例,fmt用于格式化输入和输出。
-
第二步 − 使用const关键字创建一个新的布料枚举类型。
-
第三步 − Saree、Kurti和Shrug应分别定义为整数,并分别给定值0、1和2。
-
第四步 − 创建一个名为clothStruct的结构体类型,其中包含name和enum字段。
-
第五步 − 创建一个名为clothList的clothStruct数组,其中包含代表潜在衣物的项,以及它们的名称和枚举值。
-
第六步 − 当您遍历clothList数组时,检查结构体的name字段是否与提供的布料字符串匹配。
-
第七步 − 如果名称字段匹配,则打印枚举值并结束循环。
-
第八步 − 如果输入字符串与任何枚举值都不匹配,应始终考虑添加错误处理。
示例
在本示例中,我们将看到如何使用用户定义的函数通过字符串值查找枚举值
package main
import "fmt"
type Cloth int
const (
Saree Cloth = iota //create cloth enumeration type
Kurti
Shrug
)
type clothStruct struct {
name string
enum Cloth
}
var clothList = []clothStruct{
{name: "saree", enum: Saree},
{name: "kurti", enum: Kurti},
{name: "shrug", enum: Shrug},
}
func main() {
cloth := "kurti"
fmt.Println("The enum value of cloth is:")
for _, v := range clothList {
if v.name == cloth {
fmt.Println(v.enum) //print the required enum value
break
}
}
}
输出
The enum value of cloth is:
1
结论
我们使用了两种方法来执行根据字符串值查找枚举的程序。在第一个示例中,我们使用了字符串表示,而在第二个示例中,我们使用了包含字符串和枚举字段的结构体。
极客笔记