在围棋中我可以使用 stringer
将常量名称转换为字符串:
//go:generate stringer -type=M
type M int
const (
_ M = iota
Foo // "Foo"
Bar // "Bar"
)
有什么可以让我转换
"foo"
字符串转换为 M
类型的变量除了手写开关?
最佳答案
找到了一种方法,但它仍然是半手动的。通过使用stringer创建的mapping slice,也可以搜索到逆向操作:
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)
}
关于go - 纵梁工具是否有 "reverse"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61310161/