在golang中,对应于给定的字符串的枚举常量对于通过其字符串值来查找枚举(enum)是必要的。一个switch语句或一串if-else语句可以用来做这个。另一种方法是使用一个地图,将枚举常量作为值,将字符串值作为键。枚举常量现在可以使用它们的字符串形式进行快速有效的查询。让我们通过各种例子来了解如何在go编程语言中通过字符串值查询枚举。
方法1:使用字符串表示
在这个例子中,我们将看到如何使用字符串表示法通过字符串值查询枚举。const关键字被用来将Cloth类型定义为一个包含Saree、Kurti和Shrug值的枚举。然后,衣服的字符串表示被连接到一个地图中的枚举值。主函数在衣服地图中搜索 “saree “的枚举值,并将其打印到终端。让我们通过实例和算法来了解它的执行。
语法
Map[]
地图是Golang中一个预先建立的数据结构,可以实现键值对的存储和检索。地图的键必须是不同的,其值可以是任何数据类型。使用地图可以有效地存储和检索数据,它被实现为哈希表。项目可以使用[]操作符来添加、检索和删除,它们可以使用make()方法和map关键字来构建。
算法
- 第1步 – 在程序中创建一个包main并声明fmt(format package)包,其中main产生可执行的例子,fmt帮助格式化输入和输出。
-
第2步 – 使用const关键字来定义一个新的枚举类型,称为Clothes。
-
第 3步– 给Saree、Kurti和Shrug这些枚举值相应地加上整数值0、1和2。
-
第4步– 制作一个名为 “衣服 “的地图,将衣服的枚举值与它们的字符串表示相联系。
-
第5步– 在主函数中利用衣服图,使用字符串表示法查找特定布料的枚举值。
-
第6步 – 使用fmt.Printlln()函数在控制台打印枚举值,其中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 的结构的名称和枚举字段。代表潜在衣服的元素被定义为 clothStruct 的 clothList 数组,以及其名称和枚举值。这个策略还提供了一个选项,可以根据需要扩展结构的字段或方法。
算法
- 第1步– 创建一个包main,并在程序中声明fmt(format package)包,其中main产生可执行实例,fmt帮助格式化输入和输出。
-
第2步 – 使用const关键字来创建一个新的Cloth枚举类型。
-
第 3步– Saree、Kurti和Shrug应该被定义为整数,并相应给出0、1和2的值。
-
第4步– 用字段名和枚举创建一个名为 clothStruct 的结构类型。
-
第 5步– 建立一个名为 clothStruct 数组的 clothList,其中有代表潜在衣服的项目,以及它们的名称和枚举值。
-
第6步– 当你翻阅 clothList 数组时,检查一个结构的名称字段是否与主函数中提供的布串相匹配。
-
第7步– 如果名称字段是匹配的,则打印枚举值并结束循环。
-
第8步– 如果输入的字符串与任何一个枚举值不匹配,你应该考虑添加错误处理。
例子
在这个例子中,我们将看到如何使用用户定义的函数通过字符串查找枚举值
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
总结
我们使用两种方法执行了通过字符串值查询枚举的程序。在第一个例子中,我们使用字符串表示,在第二个例子中,我们使用具有字符串和枚举字段的结构。