В Golang, есть несколько способов элегантно спарсить значение типа time.Duration из строки. Вот несколько примеров:
1. Использование функции time.ParseDuration:
package main import ( "fmt" "time" ) func main() { input := "2h30m" duration, err := time.ParseDuration(input) if err != nil { fmt.Println("Ошибка при парсинге времени:", err) return } fmt.Println("Parsed duration:", duration) }
В этом примере, мы используем функцию time.ParseDuration для парсинга строки "2h30m". Функция парсит строку и возвращает значение типа time.Duration, которое мы затем выводим на экран. Если произошла ошибка при парсинге, мы выводим соответствующее сообщение.
2. Использование метода time.Duration.Parse:
package main import ( "fmt" "time" ) func main() { input := "1d12h" var duration time.Duration err := duration.Parse(input) if err != nil { fmt.Println("Ошибка при парсинге времени:", err) return } fmt.Println("Parsed duration:", duration) }
В этом примере, мы объявляем переменную типа time.Duration и затем используем метод Parse для парсинга строки "1d12h". Метод присваивает результат парсинга переменной duration, и мы выводим ее значение на экран. Если произошла ошибка, мы выводим соответствующее сообщение.
3. Использование пакета github.com/duration.ParseDuration:
package main import ( "fmt" "github.com/duration.ParseDuration" ) func main() { input := "30s" duration, err := duration.ParseDuration(input) if err != nil { fmt.Println("Ошибка при парсинге времени:", err) return } fmt.Println("Parsed duration:", duration) }
В этом примере, мы используем пакет github.com/duration.ParseDuration, который предоставляет улучшенную версию функции time.ParseDuration с несколькими дополнительными функциями. Мы импортируем пакет и затем используем функцию ParseDuration для парсинга строки "30s". Результат парсинга сохраняется в переменной duration и выводится на экран. Если произошла ошибка, мы выводим соответствующее сообщение.
Каждый из этих способов имеет свои преимущества и недостатки, и выбор зависит от особенностей вашего проекта и предпочтений разработчиков. В любом случае, эти примеры должны помочь вам начать парсить значения типа time.Duration в Go.