Golang 枚举可以像 Java 的枚举一样执行相同的行为吗?

Java 的枚举具有有用的方法“valueOf(string)”,它通过名称返回 const 枚举成员。前任。


enum ROLE {

  FIRST("First role"),

  SECOND("Second role")


  private final String label;


  private ROLE(label String) {

    this.label = label;

  }


  public String getLabel() {

    return label;

  }

}

// in other place of code we can do:

ROLE.valueOf("FIRST").getLabel(); // get's "First role"

例如,在 html 表单的选择提交到服务器之后,此行为很有用。我们有字符串表示需要转换成真正的枚举。


有人可以告诉,golang 可以做同样的行为吗?欢迎使用代码示例。


茅侃侃
浏览 124回答 1
1回答

慕容3067478

不,Go 没有枚举。所以你需要使用单独的地图:const (    First = iota    Second)var byname = map[string]int {    "First": First,    "Second": Second,}如果您需要大量此类常量,请考虑使用代码生成。但实际上,我没有看到您想要的功能的真正共鸣:常量几乎是自描述的,因为在源代码中它们的名称已经是文本。 因此,“在运行时获取与文本字符串相关联的数字”的唯一合理用例是解析一些数据/输入,这就是使用查找图的情况——一旦你像我一样重新表述问题,这很明显.
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go