Есть ли «реверс» для инструмента стрингера? - PullRequest
0 голосов
/ 19 апреля 2020

В go Я могу использовать stringer для преобразования имен констант в строку:

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

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

Есть ли что-нибудь, что позволило бы мне преобразовать строку "foo" в переменную типа M кроме рукописного переключателя?

1 Ответ

0 голосов
/ 19 апреля 2020

Нашел один способ сделать это, но он все еще наполовину ручной. С помощью среза сопоставления, созданного стрингером, можно также выполнить поиск, чтобы отменить операцию:

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)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...