flag--命令行参数定义多标签示例

// TestFlag2 project main.go
package main
 
import (
    "flag"
    "fmt"
)
 
func main() {
    //定义Flag
    //方式一:通过flag.String(), Bool(), Int() 等flag.Xxx()方法,该种方式返回一个相应的指针
    namePtr := flag.String("name", "Anson", "user's name")
    agePtr := flag.Int("age", 22, "user's age")
    vipPtr := flag.Bool("vip", true, "is a vip user")
    //方式二:通过flag.XxxVar()方法将flag绑定到一个变量,该种方式返回值类型
    var email string
    flag.StringVar(&email, "email", "abc@gmail.com", "user's email")
    //还有第三种方式,通过flag.Var()绑定自定义类型,自定义类型需要实现Value接口(Receives必须为指针)
    //flag.Var(&flagVal, "name", "help message for flagname")
 
    //解析命令行参数,值保存到定义的flag
    flag.Parse()
 
    //调用Parse解析后,就可以直接使用flag本身(指针类型)或者绑定的变量了(值类型)
    //还可通过flag.Args(), flag.Arg(i)来获取非flag命令行参数
    others := flag.Args() //保存Flag以外的变量
    fmt.Println("name:", *namePtr)
    fmt.Println("age:", *agePtr)
    fmt.Println("vip:", *vipPtr)
    fmt.Println("email:", email)
    fmt.Println("other:", others)
    fmt.Println("---------")
    for i := 0; i < len(flag.Args()); i++ {
        fmt.Println("Arg", i, "=", flag.Arg(i))
    }
}

执行结果:

testflag2  -name aa -age 33 -vip=false aaa bbb ccc 111 222
name: aa
age: 33
vip: false
email: abc@gmail.com
other: [aaa bbb ccc 111 222]
---------
Arg 0 = aaa
Arg 1 = bbb
Arg 2 = ccc
Arg 3 = 111
Arg 4 = 222

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值