Функция flag.StringVar

Функция flag.StringVar позволяет привязать строковый флаг командной строки к уже существующей переменной. В отличие от функции flag.String, которая создает новую переменную и возвращает указатель на нее, flag.StringVar принимает указатель на переменную, куда будет сохранено значение флага. В первый параметр функция принимает указатель на строковую переменную, во второй параметр — имя флага, в третий параметр — значение по умолчанию, в четвертый параметр — описание флага.

Синтаксис

goflag.StringVar(ptr, name, defaultValue, usage)

Пример sect

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

gopackage main

import (
  "flag"
  "fmt"
)

func main() {
  var name string
  flag.StringVar(&name, "name", "Guest", "user name")
  flag.Parse()

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

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

go"Hello, Guest!"

Результат выполнения кода при запуске с аргументом "name=John":

go"Hello, John!"

Пример sect

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

gopackage main

import (
  "flag"
  "fmt"
)

func main() {
  var host string
  var port string

  flag.StringVar(&host, "host", "localhost", "server host")
  flag.StringVar(&port, "port", "8080", "server port")
  flag.Parse()

  fmt.Printf("Server running on %s:%s", host, port)
}

Результат выполнения кода при запуске с аргументами "host=127.0.0.1 port=9090":

go"Server running on 127.0.0.1:9090"

Пример sect

Давайте рассмотрим, как работает обработка пустых строковых флагов:

gopackage main

import (
  "flag"
  "fmt"
)

func main() {
  var config string

  flag.StringVar(&config, "config", "", "path to config file")
  flag.Parse()

  if config == "" {
    fmt.Println("No config file provided")
  } else {
    fmt.Printf("Using config file: %s", config)
  }
}

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

go"No config file provided"

Результат выполнения кода при запуске с аргументом "config=./app.conf":

go"Using config file: ./app.conf"

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

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