РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
1400 of 1593 menu

Функция flag.VisitAll

Функция flag.VisitAll выполняет обход всех объявленных флагов командной строки. Она принимает один параметр — функцию обратного вызова, которая вызывается для каждого флага. Данная функция полезна для вывода информации о всех доступных флагах, их значений по умолчанию или для выполнения каких-либо действий с каждым флагом.

Синтаксис

flag.VisitAll(fn func(*flag.Flag))

Пример

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

package main import ( "flag" "fmt" ) func main() { name := flag.String("name", "Guest", "user name") age := flag.Int("age", 18, "user age") active := flag.Bool("active", false, "user active status") flag.Parse() flag.VisitAll(func(f *flag.Flag) { fmt.Printf("Flag: -%s, value: %s, default: %s\n", f.Name, f.Value.String(), f.DefValue) }) }

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

"Flag: -active, value: false, default: false" "Flag: -age, value: 18, default: 18" "Flag: -name, value: Guest, default: Guest"

Пример

Используем функцию flag.VisitAll для форматированного вывода справки по всем доступным флагам:

package main import ( "flag" "fmt" ) func main() { host := flag.String("host", "localhost", "server host") port := flag.Int("port", 8080, "server port") debug := flag.Bool("debug", false, "enable debug mode") flag.Parse() fmt.Println("Available flags:") flag.VisitAll(func(f *flag.Flag) { fmt.Printf(" -%s: %s (default: %s)\n", f.Name, f.Usage, f.DefValue) }) }

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

"Available flags:" " -debug: enable debug mode (default: false)" " -host: server host (default: localhost)" " -port: server port (default: 8080)"

Пример

Функция flag.VisitAll полезна для создания собственной справки или логирования всех переданных флагов в произвольном формате:

package main import ( "flag" "fmt" "strings" ) func main() { config := flag.String("config", "config.yaml", "path to config file") timeout := flag.Int("timeout", 30, "timeout in seconds") verbose := flag.Bool("verbose", false, "enable verbose output") flag.Parse() var flagsInfo []string flag.VisitAll(func(f *flag.Flag) { flagsInfo = append(flagsInfo, fmt.Sprintf("%s=%s", f.Name, f.Value.String())) }) fmt.Printf("Flags: [%s]\n", strings.Join(flagsInfo, ", ")) }

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

"Flags: [config=config.yaml, timeout=30, verbose=false]"

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

  • функцию flag.Visit,
    которая обходит только установленные флаги
  • функцию flag.Parse,
    которая выполняет разбор командной строки
  • функцию flag.PrintDefaults,
    которая выводит значения по умолчанию для всех флагов
  • структуру flag.FlagSet,
    которая позволяет создавать собственные наборы флагов
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить