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

Функция flag.Visit

Функция flag.Visit предназначена для итерации по флагам, которые были явно установлены в командной строке. Она принимает один аргумент — функцию обратного вызова, которая будет вызвана для каждого установленного флага. Эта функция принимает аргумент типа *flag.Flag, содержащий информацию о флаге (его имя, значение и использование).

В отличие от flag.VisitAll, которая обходит все определенные флаги (включая неустановленные), функция flag.Visit обрабатывает только те флаги, которые были указаны пользователем в командной строке.

Синтаксис

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

Параметр fn — это пользовательская функция, которая получает указатель на структуру flag.Flag для каждого установленного флага.

Пример

Давайте рассмотрим программу, которая определяет флаги name и age, а затем с помощью flag.Visit выводит только те флаги, которые были указаны пользователем:

package main import ( "flag" "fmt" ) func main() { name := flag.String("name", "anonymous", "your name") age := flag.Int("age", 0, "your age") flag.Parse() fmt.Println("Visited flags:") flag.Visit(func(f *flag.Flag) { fmt.Printf("Flag: %s, Value: %s\n", f.Name, f.Value) }) }

Результат выполнения с аргументами -name=john -age=25:

Visited flags: Flag: age, Value: 25 Flag: name, Value: john

Обратите внимание, что порядок вывода может отличаться, так как обход происходит в произвольном порядке.

Пример

Если пользователь указал только один флаг, то функция flag.Visit вызовет колбэк только для него. Запустим программу с флагом -name=alice:

package main import ( "flag" "fmt" ) func main() { name := flag.String("name", "anonymous", "your name") age := flag.Int("age", 0, "your age") flag.Parse() flag.Visit(func(f *flag.Flag) { fmt.Printf("Visited: %s = %s\n", f.Name, f.Value) }) }

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

Visited: name = alice

Флаг age не был указан, поэтому он не попал в обход.

Пример

Если программа запущена без аргументов командной строки, функция flag.Visit не вызовет колбэк ни разу, так как ни один флаг не был установлен:

package main import ( "flag" "fmt" ) func main() { name := flag.String("name", "anonymous", "your name") age := flag.Int("age", 0, "your age") flag.Parse() flag.Visit(func(f *flag.Flag) { fmt.Printf("Visited: %s = %s\n", f.Name, f.Value) }) fmt.Println("No flags visited") }

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

No flags visited

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

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