Golang как элегантно спарсить time.Duration?

В 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.