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

纵梁工具是否有“反向”功能?

纵梁工具是否有“反向”功能?

Go
GCT1015 2022-06-01 10:35:27
在 go 中,我可以使用stringer将 const 名称转换为字符串://go:generate stringer -type=Mtype M intconst (    _ M = iota    Foo // "Foo"    Bar // "Bar")除了手写开关之外,还有什么可以让我将"foo"字符串转换为类型变量的吗?M
查看完整描述

2 回答

?
开心每一天1111

TA贡献1836条经验 获得超13个赞

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


type Measurement int


const (

    invalidMeasurement Measurement = iota

    Meters

    Liters

    Pounds

)


// Works with golang.org/x/tools/cmd/stringer

// v0.0.0-20200925191224-5d1fdd8fa346

func UnString(s string) Measurement {

    s = strings.ToLower(s)

    l := strings.ToLower(_Measurement_name)

    for i := 0; i < len(_Measurement_index)-1; i++ {

        if s == l[_Measurement_index[i]:_Measurement_index[i+1]] {

            return Measurement(i)

        }

    }

    // 

    return Measurement(0)

}


查看完整回答
反对 回复 2022-06-01
?
斯蒂芬大帝

TA贡献1827条经验 获得超8个赞

我最近发现了https://github.com/alvaroloes/enumer,它添加了一个TypeString(string) Type方法,可以将字符串值转换为类型并且可以替换stringer.



查看完整回答
反对 回复 2022-06-01
  • 2 回答
  • 0 关注
  • 106 浏览
慕课专栏
更多

添加回答

举报

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