Go 是否有一个“问题”;反向;对于stringer工具?

Go 是否有一个“问题”;反向;对于stringer工具?,go,Go,在go中,我可以使用stringer将常量名称转换为字符串: //go:generate stringer -type=M type M int const ( _ M = iota Foo // "Foo" Bar // "Bar" ) 除了手写开关之外,还有什么方法可以让我将“foo”字符串转换成M类型的变量吗?找到了一种方法,但仍然是半手动的。通过使用stringer创建的映射切片,还可以对其进行搜索以反转操作: 类型测量int 常数( 无效测量=物联网 米 升

在go中,我可以使用
stringer
将常量名称转换为字符串:

//go:generate stringer -type=M
type M int

const (
    _ M = iota
    Foo // "Foo"
    Bar // "Bar"
)

除了手写开关之外,还有什么方法可以让我将
“foo”
字符串转换成
M
类型的变量吗?

找到了一种方法,但仍然是半手动的。通过使用stringer创建的映射切片,还可以对其进行搜索以反转操作:

类型测量int
常数(
无效测量=物联网
米
升
英镑
)
//与golang.org/x/tools/cmd/stringer一起工作
//v0.0.0-20200925191224-5d1fdd8fa346
func非拉伸(s字符串)测量{
s=字符串。ToLower(s)
l:=strings.ToLower(\u度量值\u名称)
对于i:=0;i
我最近发现了一个添加了
TypeString(string)Type
方法的方法,该方法将字符串值转换为Type,并可以替换
stringer

看起来索引方法在stringer版本之间一定发生了变化。我相应地更新了代码(更改了索引),并为我正在使用的添加了版本标识符。还为上下文添加了示例枚举。