Функция flag.Bool
Функция flag.Bool определяет булев флаг командной строки.
Она принимает три параметра: имя флага (строку), значение по умолчанию
(тип bool) и описание флага (строку). Функция возвращает
указатель на bool, который будет содержать значение флага
после вызова flag.Parse. Булевы флаги не требуют
явного значения - их присутствие в командной строке устанавливает
флаг в true.
Синтаксис
flag.Bool(name, value, usage)
где:
- name - имя флага (строка)
- value - значение по умолчанию (bool)
- usage - описание флага (строка)
Пример с булевым флагом
Давайте создадим программу, которая принимает булев флаг
-verbose для включения подробного вывода:
package main
import (
"flag"
"fmt"
)
func main() {
verbose := flag.Bool("verbose", false, "enable verbose output")
flag.Parse()
if *verbose {
fmt.Println("Verbose mode enabled")
} else {
fmt.Println("Verbose mode disabled")
}
}
Результат выполнения кода без флага:
"Verbose mode disabled"
Результат выполнения кода с флагом:
go run main.go -verbose
"Verbose mode enabled"
Результат выполнения кода с флагом и значением:
go run main.go -verbose=true
"Verbose mode enabled"
Пример с несколькими булевыми флагами
Давайте создадим программу с несколькими булевыми флагами для управления различными опциями:
package main
import (
"flag"
"fmt"
)
func main() {
verbose := flag.Bool("verbose", false, "enable verbose output")
debug := flag.Bool("debug", false, "enable debug mode")
quiet := flag.Bool("quiet", false, "suppress all output")
flag.Parse()
if *quiet {
fmt.Println("quiet mode: no output")
} else if *debug {
fmt.Println("debug mode enabled")
} else if *verbose {
fmt.Println("verbose mode enabled")
} else {
fmt.Println("normal mode")
}
}
Результат выполнения кода с несколькими флагами:
go run main.go -verbose -debug
"debug mode enabled"
Результат выполнения кода с флагом quiet:
go run main.go -quiet
"quiet mode: no output"
Пример с проверкой значения флага
Давайте создадим программу, которая проверяет значение булевого флага для управления логикой выполнения:
package main
import (
"flag"
"fmt"
)
func main() {
enableFeature := flag.Bool("enable", true, "enable feature X")
flag.Parse()
if *enableFeature {
fmt.Println("feature X is enabled")
// выполнение логики с включенной функцией
} else {
fmt.Println("feature X is disabled")
// выполнение логики с отключенной функцией
}
}
Результат выполнения кода со значением по умолчанию:
"feature X is enabled"
Результат выполнения кода с отключением функции:
go run main.go -enable=false
"feature X is disabled"
Смотрите также
-
функцию
flag.String,
которая определяет строковый флаг командной строки -
функцию
flag.Int,
которая определяет целочисленный флаг командной строки -
функцию
flag.Float64,
которая определяет флаг с плавающей точкой -
функцию
flag.Parse,
которая разбирает флаги командной строки