Golang 通过字符串值查找枚举

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

结论

我们使用了两种方法来执行根据字符串值查找枚举的程序。在第一个示例中,我们使用了字符串表示,而在第二个示例中,我们使用了包含字符串和枚举字段的结构体。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程