Функция flag.Duration
Функция flag.Duration определяет флаг командной строки с типом time.Duration.
Она принимает три параметра: имя флага, значение по умолчанию и описание флага.
Функция возвращает указатель на переменную типа time.Duration,
в которую будет записано переданное значение.
Длительность указывается в виде строки, например, "10s", "5m", "2h30m".
Синтаксис
flag.Duration(name, value, usage)
Пример
Давайте определим флаг "timeout" со значением по умолчанию "10s":
package main
import (
"flag"
"fmt"
)
func main() {
timeout := flag.Duration("timeout", 10*time.Second, "timeout duration")
flag.Parse()
fmt.Println(*timeout)
}
Результат выполнения кода без аргументов:
"10s"
Пример
Давайте передадим в программу значение флага "timeout" равное "5m30s":
package main
import (
"flag"
"fmt"
"time"
)
func main() {
timeout := flag.Duration("timeout", 10*time.Second, "timeout duration")
flag.Parse()
fmt.Printf("Timeout: %v, seconds: %v", *timeout, timeout.Seconds())
}
Запустим программу с флагом:
$ go run main.go -timeout=5m30s
"Timeout: 5m30s, seconds: 330"
Пример
Используем флаг для установки интервала времени с проверкой значения:
package main
import (
"flag"
"fmt"
"time"
)
func main() {
interval := flag.Duration("interval", 30*time.Second, "interval between checks")
flag.Parse()
if *interval < 5*time.Second {
fmt.Println("Warning: interval is too short")
} else {
fmt.Printf("Interval set to %v\n", *interval)
}
}
Результат выполнения кода с коротким интервалом:
$ go run main.go -interval=3s
"Warning: interval is too short"
Смотрите также
-
функцию
flag.String,
которая определяет флаг со строковым значением -
функцию
flag.Int,
которая определяет флаг с целочисленным значением -
функцию
flag.Bool,
которая определяет флаг с булевым значением -
функцию
flag.Float64,
которая определяет флаг с числом с плавающей точкой