纵梁工具是否有“反转”?

问题描述 投票:0回答:1

可以使用stringer将const名称转换为字符串:

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

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

除了手写开关以外,是否有什么可以让我将"foo"字符串转换为M类型的变量的?

go
1个回答
0
投票

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

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 + 1)
        }
    }
    return Measurement(0)
}
© www.soinside.com 2019 - 2024. All rights reserved.