为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
茅侃侃 2021-12-20 09:53:20
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 可以做同样的行为吗?欢迎使用代码示例。
查看完整描述

1 回答

?
慕容3067478

TA贡献1773条经验 获得超3个赞

不,Go 没有枚举。


所以你需要使用单独的地图:


const (

    First = iota

    Second

)


var byname = map[string]int {

    "First": First,

    "Second": Second,

}

如果您需要大量此类常量,请考虑使用代码生成。


但实际上,我没有看到您想要的功能的真正共鸣:常量几乎是自描述的,因为在源代码中它们的名称已经是文本。 因此,“在运行时获取与文本字符串相关联的数字”的唯一合理用例是解析一些数据/输入,这就是使用查找图的情况——一旦你像我一样重新表述问题,这很明显.


查看完整回答
反对 回复 2021-12-20
  • 1 回答
  • 0 关注
  • 123 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信