Функция flag.Uint64

Функция flag.Uint64 объявляет флаг командной строки с типом uint64. Она принимает три параметра: имя флага, значение по умолчанию и описание флага. Функция возвращает указатель на переменную типа *uint64, в которую после вызова flag.Parse будет записано значение, переданное в командной строке. Если флаг не указан, используется значение по умолчанию.

Синтаксис

goflag.Uint64(name string, value uint64, usage string) *uint64

Пример

Давайте объявим флаг timeout с типом uint64 и значением по умолчанию 30. Затем разберем командную строку и выведем значение флага:

gopackage main

import (
  "flag"
  "fmt"
)

func main() {
  timeout := flag.Uint64("timeout", 30, "timeout in seconds")
  flag.Parse()

  fmt.Println(*timeout)
}

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

go"go run main.go -timeout 60"

Результат выполнения кода:

go60

Если запустить программу без флага, будет использовано значение по умолчанию:

go"go run main.go"

Результат выполнения кода:

go30

Пример с несколькими флагами

Давайте объявим два флага типа uint64: port и timeout. После разбора командной строки выведем их значения:

gopackage main

import (
  "flag"
  "fmt"
)

func main() {
  port := flag.Uint64("port", 8080, "server port")
  timeout := flag.Uint64("timeout", 30, "timeout in seconds")
  flag.Parse()

  fmt.Printf("port: %d, timeout: %d", *port, *timeout)
}

Запустим программу с флагами:

go"go run main.go -port 9090 -timeout 120"

Результат выполнения кода:

go"port: 9090, timeout: 120"

Обработка ошибок

Если в командной строке передано некорректное значение для флага типа uint64, например, отрицательное число или нечисловое значение, программа выведет сообщение об ошибке и завершится:

gopackage main

import (
  "flag"
  "fmt"
)

func main() {
  timeout := flag.Uint64("timeout", 30, "timeout in seconds")
  flag.Parse()

  fmt.Println(*timeout)
}

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

go"go run main.go -timeout -10"

Результат выполнения кода:

go"invalid value \"-10\" for flag -timeout: parse error"

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

  • функцию flag.Uint,
    которая объявляет флаг командной строки типа uint
  • функцию flag.Int64,
    которая объявляет флаг командной строки типа int64
  • функцию flag.String,
    которая объявляет флаг командной строки типа string
  • функцию flag.Parse,
    которая разбирает командную строку и заполняет объявленные флаги