Функция flag.Lookup

Функция flag.Lookup позволяет получить информацию о флаге командной строки по его имени. В качестве параметра она принимает строку с именем флага. Если флаг с указанным именем существует, функция возвращает указатель на структуру flag.Flag, которая содержит информацию о флаге (имя, значение по умолчанию, описание, текущее значение). Если флаг не найден, функция возвращает nil.

Синтаксис

goflag.Lookup(name)

Пример

Давайте объявим флаг "name" с типом string и воспользуемся функцией flag.Lookup для получения его структуры:

gopackage main

import (
  "flag"
  "fmt"
)

func main() {
  name := flag.String("name", "default", "user name")
  flag.Parse()

  fl := flag.Lookup("name")
  fmt.Printf("%+v\n", fl)
}

Результат выполнения кода при запуске с флагом -name=John:

go&{Name:name Usage:user name Value:john DefValue:default}

Пример

Давайте проверим, что возвращает функция flag.Lookup при обращении к несуществующему флагу:

gopackage main

import (
  "flag"
  "fmt"
)

func main() {
  flag.String("name", "default", "user name")
  flag.Parse()

  fl := flag.Lookup("age")
  fmt.Println(fl)
}

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

go<nil>

Пример

Давайте получим структуру флага и извлечем из нее имя, значение по умолчанию и текущее значение:

gopackage main

import (
  "flag"
  "fmt"
)

func main() {
  port := flag.Int("port", 8080, "server port")
  flag.Parse()

  fl := flag.Lookup("port")
  if fl != nil {
    fmt.Println("Name:", fl.Name)
    fmt.Println("Value:", fl.Value)
    fmt.Println("Default:", fl.DefValue)
  }
}

Результат выполнения кода при запуске с флагом -port=9090:

goName: port
Value: 9090
Default: 8080

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

  • функцию flag.String,
    которая объявляет флаг строкового типа
  • функцию flag.Int,
    которая объявляет флаг целочисленного типа
  • функцию flag.Bool,
    которая объявляет флаг булевого типа
  • функцию flag.Parse,
    которая разбирает командную строку