Функция flag.Bool

Функция flag.Bool определяет булев флаг командной строки. Она принимает три параметра: имя флага (строку), значение по умолчанию (тип bool) и описание флага (строку). Функция возвращает указатель на bool, который будет содержать значение флага после вызова flag.Parse. Булевы флаги не требуют явного значения - их присутствие в командной строке устанавливает флаг в true.

Синтаксис

goflag.Bool(name, value, usage)

где:

Пример с булевым флагом

Давайте создадим программу, которая принимает булев флаг -verbose для включения подробного вывода:

gopackage 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")
  }
}

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

go"Verbose mode disabled"

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

gogo run main.go -verbose
"Verbose mode enabled"

Результат выполнения кода с флагом и значением:

gogo run main.go -verbose=true
"Verbose mode enabled"

Пример с несколькими булевыми флагами

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

gopackage 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")
  }
}

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

gogo run main.go -verbose -debug
"debug mode enabled"

Результат выполнения кода с флагом quiet:

gogo run main.go -quiet
"quiet mode: no output"

Пример с проверкой значения флага

Давайте создадим программу, которая проверяет значение булевого флага для управления логикой выполнения:

gopackage 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")
    // выполнение логики с отключенной функцией
  }
}

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

go"feature X is enabled"

Результат выполнения кода с отключением функции:

gogo run main.go -enable=false
"feature X is disabled"

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

  • функцию flag.String,
    которая определяет строковый флаг командной строки
  • функцию flag.Int,
    которая определяет целочисленный флаг командной строки
  • функцию flag.Float64,
    которая определяет флаг с плавающей точкой
  • функцию flag.Parse,
    которая разбирает флаги командной строки