获取命令行参数

作者: 吃猫的鱼0 | 来源:发表于2018-01-04 10:56 被阅读4次

    flag库

    Go语言标准库提供了用于快迅解析命令行参数的flag包,大致的使用步骤如下:
    a.通过flag.String(), flag.Bool(), flag.Int()等方式来定义命令行中需要使用的参数。
    b.在定义完flag后,通过调用flag.Parse()来进行对命令行参数的解析。
    c.获取flag.String(), flag.Bool(), flag.Int()等方法的返回值,即对应用户输入的参数.
    需要注意的是flag.Xxx()返回的值是变量的内存地址,要获取值时要通过在变量前加*(星号)获取.
    
    说明:
    像flag.Int、flag.Bool、flag.String这样的函数格式都是一样的,调用的时候需要传入3个参数
    参数的说明如下:
    第一个arg表示参数名称,在控制台的时候,提供给用户使用.
    第二个arg表示默认值,如果用户在控制台没有给该参数赋值的话,就会使用该默认值.
    第三个arg表示使用说明和描述,在控制台中输入-arg的时候会显示该说明,类似-help
    

    栗子:

    package main
    
    import (
        "flag"
        "fmt"
    )
    
    func main() {
        married := flag.Bool("married", false, "Are you married?")
        age := flag.Int("age", 22, "How old are you?")
        name := flag.String("name", "Jeson", "What your name?")
    
        var address string
        //flag.StringVar这样的函数第一个参数换成了变量地址,后面的参数和flag.String是一样的。
        flag.StringVar(&address, "address", "Jeson", "Where is your address?")
    
        flag.Parse() //解析输入的参数
    
        fmt.Println("输出的参数married的值是:", *married)//不加*号的话,输出的是内存地址
        fmt.Println("输出的参数age的值是:", *age)
        fmt.Println("输出的参数name的值是:", *name)
        fmt.Println("输出的参数address的值是:", address)
    }
    

    os库

    栗子:

    package main
    
    import (
        "os"
        "fmt"
    )
    
    func main() {
    
        args := os.Args //获取用户输入的所有参数
        if args == nil || len(args) <2{
            Usage()//如果用户没有输入,或参数个数不够,则调用该函数提示用户
            //return
        }
        name := args[1] //获取输入的第一个参数
        age := args[2]  //获取输入的第二个参数
        fmt.Println("your name is:",name,"\nyour age is:",age)
    }
    var Usage = func() {
        fmt.Println("you name?");
        fmt.Println("you age?");
    }
    /*
    D:\go\workspace\src\redis>go run main/main.go yang 15
    your name is: yang
    your age is: 15
    
    D:\go\workspace\src\redis>*/
    

    相关文章

      网友评论

        本文标题:获取命令行参数

        本文链接:https://www.haomeiwen.com/subject/dstrnxtx.html