flag包实现了命令行参数的解析。
Variables
#CommandLine是默认的命令行flag集,用于解析os.Args
#所有通过flag注册的命令行,都会注册进CommandLine
var CommandLine = NewFlagSet(os.Args[0], ExitOnError)
func Lookup(name string) *Flag
返回已经已注册flag的Flag结构体指针;如果flag不存在的话,返回nil。
func Bool(name string, value bool, usage string) *bool
Bool用指定的名称、默认值、使用信息注册一个bool类型flag。返回一个保存了该flag的值的指针。
func BoolVar(p *bool, name string, value bool, usage string)
BoolVar用指定的名称、默认值、使用信息注册一个bool类型flag,并将flag的值保存到p指向的变量。
func Int(name string, value int, usage string) int
func IntVar(p int, name string, value int, usage string)
func Int64(name string, value int64, usage string) int64
func Int64Var(p int64, name string, value int64, usage string)
func Uint(name string, value uint, usage string) uint
func UintVar(p uint, name string, value uint, usage string)
func Uint64(name string, value uint64, usage string) uint64
func Uint64Var(p uint64, name string, value uint64, usage string)
func Float64(name string, value float64, usage string) float64
func Float64Var(p float64, name string, value float64, usage string)
func String(name string, value string, usage string) string
func StringVar(p string, name string, value string, usage string)
func Parse() 注册
func Parsed() bool 返回是否Parse已经被调用过。
func Args() []string 返回解析之后剩下的非flag参数。(不包括命令名)
var name string
var age uint
var is_superman bool
func init() {
flag.BoolVar(&is_superman,"i",false,"你是不是超人呀?")
flag.UintVar(&age,"a",0,"你有几岁?")
flag.StringVar(&name,"n","XXX","你的姓名")
flag.Parse()
}
func main() {
fmt.Println(name,age,is_superman)
extend_params :=flag.Args()
fmt.Println(extend_params)
}