Go语言中使用flag包对命令行进行参数解析的方法
flag
flag是Go标准库提供的解析命令行参数的包。
使用方式:
flag.Type(name,defValue,usage)
其中Type为String,Int,Bool等;并返回一个相应类型的指针。
flag.TypeVar(&flagvar,name,defValue,usage)
将flag绑定到一个变量上。
自定义flag
只要实现flag.Value接口即可:
typeValueinterface{
String()string
Set(string)error
}
通过如下方式定义该flag:
flag.Var(&flagvar,name,usage)
示例
packagemain
import"flag"
import"fmt"
import"strconv"
typepercentagefloat32
func(p*percentage)Set(sstring)error{
v,err:=strconv.ParseFloat(s,32)
*p=percentage(v)
returnerr
}
func(p*percentage)String()string{returnfmt.Sprintf("%f",*p)}
funcmain(){
namePtr:=flag.String("name","lyh","user'sname")
agePtr:=flag.Int("age",22,"user'sage")
vipPtr:=flag.Bool("vip",true,"isavipuser")
varemailstring
flag.StringVar(&email,"email","lyhopq@gmail.com","user'semail")
varpoppercentage
flag.Var(&pop,"pop","popularity")
flag.Parse()
others:=flag.Args()
fmt.Println("name:",*namePtr)
fmt.Println("age:",*agePtr)
fmt.Println("vip:",*vipPtr)
fmt.Println("pop:",pop)
fmt.Println("email:",email)
fmt.Println("other:",others)
}
$./command-line-flags name:lyh age:22 vip:true email:lyhopq@gmail.com other:[]
$./command-line-flags-namegolang-age4-vip=true-pop99简洁高并发等等 name:golang age:4 vip:true pop:99 email:lyhopq@gmail.com other:[简洁高并发等等]
$./command-line-flags-h Usageof./command-line-flags: -age=22:user'sage -email="lyhopq@gmail.com":user'semail -name="lyh":user'sname -pop=0.0:popularity -vip=true:isavipuser
热门推荐
1 训练狗狗憋尿
2 狗狗追踪训练
3 狗狗训练要多少钱
5 深圳狗狗训练
6 训练狗狗唤回
7 狗狗叫怎么训练
8 狗狗训练班
10 狗狗社会化训练
11 狗狗叫回训练
12 广州狗狗训练学校
13 狗狗训练躺下
14 狗狗随行训练
15 训练狗狗巡回
16 狗狗要怎么训练
17 狗狗喂食训练
18 训练狗狗躺下