Функция flag.NewFlagSet
Функция flag.NewFlagSet создает новый набор флагов
командной строки. Она позволяет изолировать обработку флагов
для разных подкоманд или модулей приложения. Первым параметром
функция принимает имя набора флагов, которое будет отображаться
в сообщениях об ошибках. Вторым параметром функция принимает
режим обработки ошибок flag.ErrorHandling.
Синтаксис
flag.NewFlagSet(name, errorHandling)
Пример
Давайте создадим новый набор флагов и добавим в него строковый флаг:
package main
import (
"flag"
"fmt"
)
func main() {
fs := flag.NewFlagSet("myset", flag.ExitOnError)
name := fs.String("name", "default", "user name")
fs.Parse([]string{"-name", "john"})
fmt.Println(*name)
}
Результат выполнения кода:
"john"
Пример
Давайте создадим набор флагов с несколькими флагами разных типов и проверим их значения:
package main
import (
"flag"
"fmt"
)
func main() {
fs := flag.NewFlagSet("app", flag.ContinueOnError)
name := fs.String("name", "guest", "user name")
age := fs.Int("age", 18, "user age")
active := fs.Bool("active", false, "is active")
fs.Parse([]string{"-name", "alice", "-age", "25", "-active"})
fmt.Printf("name: %s, age: %d, active: %t", *name, *age, *active)
}
Результат выполнения кода:
"name: alice, age: 25, active: true"
Пример
Давайте используем набор флагов для обработки подкоманды в CLI приложении:
package main
import (
"flag"
"fmt"
"os"
)
func main() {
if len(os.Args) < 2 {
fmt.Println("expected subcommand")
os.Exit(1)
}
switch os.Args[1] {
case "serve":
fs := flag.NewFlagSet("serve", flag.ExitOnError)
port := fs.String("port", "8080", "server port")
fs.Parse(os.Args[2:])
fmt.Printf("server running on port %s", *port)
case "version":
fmt.Println("app version 1.0.0")
default:
fmt.Println("unknown command")
}
}
Результат выполнения кода при запуске с параметрами
"serve -port 9090":
"server running on port 9090"
Смотрите также
-
функцию
flag.Parse,
которая разбирает флаги командной строки -
функцию
flag.String,
которая определяет строковый флаг -
функцию
flag.Int,
которая определяет целочисленный флаг -
функцию
flag.Bool,
которая определяет логический флаг