Функция flag.DurationVar

Функция flag.DurationVar используется для привязки значения флага командной строки к переменной типа time.Duration. В первый параметр передается указатель на переменную, которая будет хранить значение. Во второй параметр передается имя флага (строка). Третий параметр — значение по умолчанию. Четвертый параметр — описание флага (используется в справке). После вызова функции и вызова flag.Parse, переменная будет содержать значение интервала времени, переданное пользователем.

Синтаксис

goflag.DurationVar(ptr, name, value, usage)

Пример

Давайте создадим программу, которая принимает флаг -timeout и выводит его значение:

gopackage main

import (
  "flag"
  "fmt"
  "time"
)

func main() {
  var timeout time.Duration
  flag.DurationVar(&timeout, "timeout", 5*time.Second, "timeout duration")
  flag.Parse()

  fmt.Println(timeout)
}

Результат выполнения программы без дополнительных флагов:

go"5s"

Если запустить программу с флагом:

gogo run main.go -timeout 10s

Результат выполнения программы:

go"10s"

Пример

Рассмотрим пример, где используются несколько флагов разного типа. Создадим программу с флагами -timeout и -interval:

gopackage main

import (
  "flag"
  "fmt"
  "time"
)

func main() {
  var timeout time.Duration
  var interval time.Duration

  flag.DurationVar(&timeout, "timeout", 30*time.Second, "timeout for operation")
  flag.DurationVar(&interval, "interval", 5*time.Minute, "interval between checks")
  flag.Parse()

  fmt.Printf("Timeout: %s, Interval: %s\n", timeout, interval)
}

Запустим программу с указанными флагами:

gogo run main.go -timeout 1m30s -interval 10m

Результат выполнения программы:

go"Timeout: 1m30s, Interval: 10m0s"

Смотрите также

  • функцию flag.Duration,
    которая возвращает указатель на значение флага длительности
  • функцию flag.StringVar,
    которая привязывает флаг к строковой переменной
  • функцию flag.IntVar,
    которая привязывает флаг к целочисленной переменной
  • функцию flag.BoolVar,
    которая привязывает флаг к логической переменной