Разобрать строку дня недели во время.

Я столкнулся с проблемой преобразования строки дня недели в значение time.Weekday. Я не смог найти ничего встроенного в пакет time.

Тогда я написал эту простую функцию (которая покрывает мои потребности):

 var daysOfWeek = [...]string{
    "Sunday",
    "Monday",
    "Tuesday",
    "Wednesday",
    "Thursday",
    "Friday",
    "Saturday",
}

func parseWeekday(v string) (time.Weekday, error) {
    for i := range daysOfWeek {
        if daysOfWeek[i] == v {
            return time.Weekday(i), nil
        }
    }

    return time.Sunday, fmt.Errorf("invalid weekday '%s'", v)
}

Есть ли другой рекомендуемый или идиоматический способ выполнить это преобразование в Голанге?

Спасибо!

4 голоса | спросил cvbarros 22 ndEurope/Moscowp30Europe/Moscow09bEurope/MoscowSat, 22 Sep 2018 14:26:21 +0300 2018, 14:26:21

1 ответ


0
Да, используйте карту вместо массива, чтобы поиск выполнялся быстрее и проще:Тестирование это:Вывод (попробуйте на Go Playgorund ):Чаевые:Вы даже можете использовать цикл ---- +: = 3 =: + ---- для безопасной инициализации карты ---- +: = 4 =: + ---- так:Тестирование и вывод одинаков.Попробуйте это на Go Playground .Еще одно приятное свойство этого решения карты (по сравнению с вашим решением для массива) заключается в том, что вы можете перечислить дополнительные допустимые значения в той же карте, которые могут быть проанализированы в ---- +: = 6 =: + ---- без дополнительныхРазбор кода.Например, давайте также разберем трехбуквенные короткие названия дней недели в их ---- +: = 7 =: + ---- эквивалент, например ---- +: = 8 =: + ---- to ---- +: = 9 =: + ---- .Это расширение можно добавить с помощью простого цикла:Тестирование это:Вывод (попробуйте на Go Playground ):
ответил icza 22 ndEurope/Moscowp30Europe/Moscow09bEurope/MoscowSat, 22 Sep 2018 14:37:48 +0300 2018, 14:37:48

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132