微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在Go中,当您将其名称作为字符串时,如何获取枚举const iota int值

如何解决在Go中,当您将其名称作为字符串时,如何获取枚举const iota int值

我有一个Golang“枚举”

type MyType int 
const (
  Thing1 MyType = iota
  Thing2
  Thing3
)

后来,在另一个go文件/程序包中,我将上述名称定义为 strings

如何从 string 变为 enum ?我知道MyType是否为字符串而不是int,我可以做到

MyType(myString)

但是它不适用于int(因为myString不是int)

解决方法

如果不想更改MyType的类型,可以为要枚举的字符串定义一个映射,并按如下方式使用它:

type MyType int
const (
    Thing1 MyType = iota
    Thing2
    Thing3
)

var MyTypeMappings = map[string]MyType{
    "Thing1": Thing1,"Thing2": Thing2,"Thing3": Thing3,}

func main() {
    myType := MyTypeMappings["Thing1"]
    fmt.Print(myType)
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。