Функция flag.Lookup
Функция flag.Lookup позволяет получить информацию о флаге
командной строки по его имени. В качестве параметра она принимает
строку с именем флага. Если флаг с указанным именем существует,
функция возвращает указатель на структуру flag.Flag,
которая содержит информацию о флаге (имя, значение по умолчанию,
описание, текущее значение). Если флаг не найден, функция
возвращает nil.
Синтаксис
flag.Lookup(name)
Пример
Давайте объявим флаг "name" с типом string
и воспользуемся функцией flag.Lookup для получения
его структуры:
package 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:
&{Name:name Usage:user name Value:john DefValue:default}
Пример
Давайте проверим, что возвращает функция flag.Lookup
при обращении к несуществующему флагу:
package main
import (
"flag"
"fmt"
)
func main() {
flag.String("name", "default", "user name")
flag.Parse()
fl := flag.Lookup("age")
fmt.Println(fl)
}
Результат выполнения кода:
<nil>
Пример
Давайте получим структуру флага и извлечем из нее имя, значение по умолчанию и текущее значение:
package 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:
Name: port
Value: 9090
Default: 8080
Смотрите также
-
функцию
flag.String,
которая объявляет флаг строкового типа -
функцию
flag.Int,
которая объявляет флаг целочисленного типа -
функцию
flag.Bool,
которая объявляет флаг булевого типа -
функцию
flag.Parse,
которая разбирает командную строку