Golang程序 通过字符串值查询enum

在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

总结

我们使用两种方法执行了通过字符串值查询枚举的程序。在第一个例子中,我们使用字符串表示,在第二个例子中,我们使用具有字符串和枚举字段的结构。