Функция flag.String
Функция flag.String предназначена для определения строкового флага
командной строки. В первый параметр она принимает имя флага в виде
строки, во второй параметр - значение по умолчанию, которое будет
использовано, если флаг не указан, а в третий параметр - описание
флага, которое выводится при использовании флага -help.
Функция возвращает указатель на строку, в которую после вызова
flag.Parse будет записано значение флага.
Синтаксис
flag.String(name, defaultValue, usage)
Пример с одним флагом
Давайте определим строковый флаг -name со значением
по умолчанию "guest" и описанием "user name":
package main
import (
"flag"
"fmt"
)
func main() {
name := flag.String("name", "guest", "user name")
flag.Parse()
fmt.Println("Hello,", *name)
}
Результат выполнения без указания флага:
"Hello, guest"
Результат выполнения с указанием флага -name=John:
"Hello, John"
Пример с несколькими флагами
Определим два строковых флага -username и -role
со значениями по умолчанию:
package main
import (
"flag"
"fmt"
)
func main() {
username := flag.String("username", "admin", "user name")
role := flag.String("role", "user", "user role")
flag.Parse()
fmt.Printf("Username: %s, Role: %s\n", *username, *role)
}
Результат выполнения с указанием обоих флагов:
"Username: john, Role: manager"
Проверка установки флага
Чтобы определить, был ли указан флаг, можно использовать функцию
flag.Visit. Давайте проверим, был ли передан флаг
-config:
package main
import (
"flag"
"fmt"
)
func main() {
config := flag.String("config", "config.json", "config file path")
flag.Parse()
exists := false
flag.Visit(func(f *flag.Flag) {
if f.Name == "config" {
exists = true
}
})
fmt.Printf("config flag specified: %v\n", exists)
fmt.Printf("config path: %s\n", *config)
}
Результат выполнения без флага:
"config flag specified: false"
"config path: config.json"
Результат выполнения с флагом -config=custom.json:
"config flag specified: true"
"config path: custom.json"
Смотрите также
-
функцию
flag.Int,
которая определяет целочисленный флаг командной строки -
функцию
flag.Bool,
которая определяет булев флаг командной строки -
функцию
flag.Float64,
которая определяет флаг с плавающей точкой -
функцию
flag.StringVar,
которая привязывает строковый флаг к существующей переменной