Нашел один способ сделать это, но он все еще наполовину ручной. С помощью среза сопоставления, созданного стрингером, можно также выполнить поиск, чтобы отменить операцию:
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)
}