Функция flag.Parse

Функция flag.Parse выполняет разбор аргументов командной строки в соответствии с определенными флагами. Она должна вызываться после объявления всех флагов с помощью функций типа flag.String, flag.Int, flag.Bool и других, но до использования значений флагов. При вызове происходит анализ фактических аргументов командной строки (содержатся в os.Args), начиная со второго элемента, и установка значений флагов. Если встречается флаг, который не был объявлен, функция выводит сообщение об ошибке и завершает программу с кодом 2. После успешного разбора значения флагов становятся доступными через указатели, переданные в функции объявления флагов.

Синтаксис

goflag.Parse()

Пример

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

gopackage main

import (
  "flag"
  "fmt"
)

func main() {
  var name string
  flag.StringVar(&name, "name", "world", "specify the name")
  flag.Parse()

  fmt.Printf("Hello, %s!\n", name)
}

Если запустить программу без аргументов, результат будет:

go"Hello, world!"

Пример

Запустим программу с флагом -name=Alice:

gogo run main.go -name=Alice

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

go"Hello, Alice!"

Пример

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

gopackage main

import (
  "flag"
  "fmt"
)

func main() {
  name := flag.String("name", "user", "user name")
  age := flag.Int("age", 18, "user age")
  active := flag.Bool("active", false, "is user active")
  flag.Parse()

  fmt.Printf("Name: %s, Age: %d, Active: %t\n", *name, *age, *active)
}

Запустим с аргументами:

gogo run main.go -name=Bob -age=30 -active

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

go"Name: Bob, Age: 30, Active: true"

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

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