Функция flag.Parsed
Функция flag.Parsed проверяет, была ли уже выполнена обработка флагов командной строки с помощью flag.Parse. Она возвращает true, если обработка флагов уже произошла, и false, если flag.Parse еще не вызывалась. Функция не принимает никаких параметров и часто используется для проверки состояния парсинга перед доступом к значениям флагов.
Синтаксис
flag.Parsed()
Пример 1. Проверка состояния парсинга
Давайте проверим, что возвращает flag.Parsed до и после вызова flag.Parse:
package main
import (
"flag"
"fmt"
)
func main() {
// До вызова Parse
fmt.Println("Before Parse:", flag.Parsed())
// Определяем флаг
name := flag.String("name", "default", "user name")
flag.Parse()
// После вызова Parse
fmt.Println("After Parse:", flag.Parsed())
fmt.Println("Name:", *name)
}
Результат выполнения кода:
"Before Parse: false"
"After Parse: true"
"Name: default"
Пример 2. Условное выполнение кода
Часто flag.Parsed используется для условного выполнения кода в зависимости от того, были ли обработаны флаги. Например, можно парсить флаги только если они еще не были обработаны:
package main
import (
"flag"
"fmt"
)
func main() {
port := flag.Int("port", 8080, "server port")
host := flag.String("host", "localhost", "server host")
// Проверяем, были ли уже обработаны флаги
if !flag.Parsed() {
fmt.Println("Parsing flags...")
flag.Parse()
}
fmt.Printf("Server running on %s:%d\n", *host, *port)
fmt.Println("Flags parsed:", flag.Parsed())
}
Результат выполнения кода:
"Parsing flags..."
"Server running on localhost:8080"
"Flags parsed: true"
Пример 3. Проверка в комбинированных сценариях
Функция flag.Parsed полезна при работе с несколькими наборами флагов или при отложенном парсинге. Давайте создадим программу, которая проверяет статус парсинга в разных частях кода:
package main
import (
"flag"
"fmt"
)
func checkParsed() {
fmt.Printf("Parsed status in function: %t\n", flag.Parsed())
}
func main() {
checkParsed()
flag.Bool("verbose", false, "enable verbose output")
fmt.Printf("Before parsing: %t\n", flag.Parsed())
flag.Parse()
fmt.Printf("After parsing: %t\n", flag.Parsed())
checkParsed()
}
Результат выполнения кода:
"Parsed status in function: false"
"Before parsing: false"
"After parsing: true"
"Parsed status in function: true"
Смотрите также
-
функцию
flag.Parse,
которая выполняет непосредственный разбор флагов командной строки -
функцию
flag.NFlag,
которая возвращает количество обработанных флагов -
функцию
flag.NArg,
которая возвращает количество аргументов после флагов -
функцию
flag.Arg,
которая возвращает аргумент по указанному индексу