flag
Встроенный пакет Flag в Go реализует разбор аргументов командной строки, что упрощает разработку инструментов командной строки.
Импорт
go
import flagТипы
Поддерживаемые типы:
- bool
- int
- int64
- uint
- uint64
- float
- float64
- string
- duration
Определение
Используйте flag.Type() для определения, возвращаемое значение — указатель:
go
name := flag.String("name", "张三", "Имя")
age := flag.Int("age", 15, "Возраст")
sex := flag.Bool("sex", true, "Пол")Также можно использовать flag.TypeVar() для определения:
go
var name string
var age int
var sex bool
flag.StringVar(&name, "name", "张三", "Имя")
flag.IntVar(&age, "age", 15, "Возраст")
flag.BoolVar(&sex, "sex", true, "Пол")Разбор
Вызовите flag.Parse() для разбора аргументов. Поддерживаемые форматы аргументов командной строки:
-flag xxx--flag xxx-flag=xxx--flag=xxx
Аргументы булевого типа должны использовать знак равенства. Разбор Flag останавливается перед первым не-аргументом командной строки.
Другое
go
func Args() []string // Возвращает все не-аргументы командной строки
func NArg() int // Возвращает количество не-аргументов командной строки
func NFlag() int // Возвращает количество аргументов командной строкиПример
go
var name string
var age int
var sex bool
flag.StringVar(&name, "name", "张三", "Имя")
flag.IntVar(&age, "age", 15, "Возраст")
flag.BoolVar(&sex, "sex", true, "Пол")
flag.Parse()
fmt.Println(name, age, sex)После компиляции запустите программу в командной строке:
powershell
PS D:\WorkSpace\Code\GoProject\bin> .\go_build_GoProject_src_main.exe
张三 15 true
PS D:\WorkSpace\Code\GoProject\bin> .\go_build_GoProject_src_main.exe -h
Usage of D:\WorkSpace\Code\GoProject\bin\go_build_GoProject_src_main.exe:
-age int
年龄 (default 15)
-name string
姓名 (default "张三")
-sex
性别 (default true)
PS D:\WorkSpace\Code\GoProject\bin> .\go_build_GoProject_src_main.exe -age 15 -name "李四" -sex=false
李四 15 false
PS D:\WorkSpace\Code\GoProject\bin>