zoukankan      html  css  js  c++  java
  • GO标准库flag

    Go语言内置的flag包实现了命令行参数的解析。

    os.Args

    os.Args是一个[]string类型。
    获取命令参数示例:

    func main()  {
        if len(os.Args) > 0{
            for index,args := range os.Args{
                fmt.Printf("args[%d]=%v
    ", index, args)
            }
        }
    }
    $ go run main.go 1234 2434 546fd d fg
    args[0]=/x/main
    args[1]=1234
    args[2]=2434
    args[3]=546fd
    args[4]=d
    args[5]=fg
    

    os.Args是一个存储命令行参数的字符串切片,它的第一个元素是执行文件的名称。

    flag包基本使用

    flag参数类型

    flag包支持的命令行参数类型有bool、int、int64、uint、uint64、float float64、string、duration。

    flag.Type()

    flag.Type(flag名, 默认值, 帮助信息)*Type
    name := flag.String("name", "张三", "姓名")
    age := flag.Int("age", 18, "年龄")
    

    flag.TypeVar()

    flag.TypeVar(Type指针, flag名, 默认值, 帮助信息)
    var name string
    var age int
    flag.StringVar(&name, "name", "张三", "姓名")
    flag.IntVar(&age, "age", 18, "年龄")
    

    flag.Parse()

    定义好命令行flag参数后,需要通过调用flag.Parse()来对命令行参数进行解析。

    • -flag xxx (使用空格,一个-符号)
    • --flag xxx (使用空格,两个-符号)
    • -flag=xxx (使用等号,一个-符号)
    • --flag=xxx (使用等号,两个-符号)

    示例

    func main()  {
        var name string
        var age int
        var delay time.Duration
        flag.StringVar(&name,"name","ares","姓名")
        flag.IntVar(&age,"age",20,"年龄")
        flag.DurationVar(&delay,"d",0,"延迟时间")
        //解析参数
        flag.Parse()
        fmt.Println(name,age,delay)
        //返回命令行参数后的其他参数
        fmt.Println(flag.Args())
        //返回命令行参数后的其他参数个数
        fmt.Println(flag.NArg())
        //返回使用的命令行参数个数
        fmt.Println(flag.NFlag())
    }
    

    使用

    $go run main.go -help
    Usage of /x/exe/main:
      -age int
            年龄 (default 20)
      -d duration
            延迟时间
      -name string
            姓名 (default "ares")
            
    $go run main.go -name ares --age 18 -d=1h
    ares 18 1h0m0s
    []
    0
    3
    
    $go run main.go 1 2 3
    ares 20 0s
    [1 2 3]
    3
    0
  • 相关阅读:
    C# FileStream 文件复制
    DataSnap Server 客户端调用 异常
    抛出异常 exception
    RAD Tokyo 10.2.2
    delphi ios info.plist
    sql 日期格式
    sql server 2014登录账号
    sql server导入excel数据
    dev16 cxgrid 在DLL里报0地址错
    sql server 查看所有表记录数
  • 原文地址:https://www.cnblogs.com/show58/p/12425364.html
Copyright © 2011-2022 走看看