Функция flag.StringVar
Функция flag.StringVar позволяет привязать
строковый флаг командной строки к уже существующей
переменной. В отличие от функции flag.String,
которая создает новую переменную и возвращает
указатель на нее, flag.StringVar принимает
указатель на переменную, куда будет сохранено
значение флага. В первый параметр функция принимает
указатель на строковую переменную, во второй параметр
— имя флага, в третий параметр — значение по умолчанию,
в четвертый параметр — описание флага.
Синтаксис
flag.StringVar(ptr, name, defaultValue, usage)
Пример sect
Давайте создадим строковый флаг с именем "name",
значением по умолчанию "Guest" и описанием
"user name":
package main
import (
"flag"
"fmt"
)
func main() {
var name string
flag.StringVar(&name, "name", "Guest", "user name")
flag.Parse()
fmt.Printf("Hello, %s!", name)
}
Результат выполнения кода при запуске без аргументов:
"Hello, Guest!"
Результат выполнения кода при запуске с аргументом
"name=John":
"Hello, John!"
Пример sect
Давайте создадим несколько строковых флагов с разными значениями по умолчанию:
package 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":
"Server running on 127.0.0.1:9090"
Пример sect
Давайте рассмотрим, как работает обработка пустых строковых флагов:
package 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)
}
}
Результат выполнения кода при запуске без аргументов:
"No config file provided"
Результат выполнения кода при запуске с аргументом
"config=./app.conf":
"Using config file: ./app.conf"
Смотрите также
-
функцию
flag.String,
которая создает новый строковый флаг и возвращает указатель -
функцию
flag.IntVar,
которая привязывает целочисленный флаг к переменной -
функцию
flag.BoolVar,
которая привязывает логический флаг к переменной -
функцию
flag.Parse,
которая разбирает переданные аргументы командной строки