Go - 36 Go 命令行参数

引入:
我们希望能够获取到命令行输入的各种参数,该如何处理?
 
基本介绍
    os.Args是一个string的切片([]string , 且第一个参数即程序名称),用来存储所有的命令行参数;
 
    案例:
        // 获取命令行参数 个数   
        fmt.Println("命令行参数有=", len(os.Args))     
        // 遍历输出各个参数     
        for i, v := range os.Args {         
            fmt.Printf("第[%v]个 参数为=%v", i, v)     
        }              
        // 使用 go build -o  test.exe main.go 创建一个test.exe文件,      
        // 测试命令 test.exe  tom  d:/abc/fads/int.log 707 需要在命令行执行而不是在ide的控制台
 
 
flag包用来解析命令行参数
    前面的方式是比较原生的方式,对解析参数不是特别方便,特别是带有指定参数形式的命令行;
    go设计者给我们提供了flag包,可以方便的解析命令行参数,而且参数顺序可以随意;
    
    实际案例:
        // 使用flag包    
        // 定义几个变量,用于接收命令行的参数值     
        var user string      
        var pwd string      
        var host string      
        var port int      
        // &user 就是接收用户命令行中输入的 -u 后面的参数值     
        // "u" 就是 -u 指定的参数名     
        // "", 默认值     
        // "用户名,默认为空"  usage 说明     
        flag.StringVar(&user, "u", "", "用户名,默认为空")     
        flag.StringVar(&pwd, "pwd", "", "密码,默认为空")     
        flag.StringVar(&host, "h", "localhost", "主机名,默认为localhost")     
        flag.IntVar(&port, "port", 3306, "端口号,默认为3306")     
        // 这里有一个非常重要的操作,转换,必须调用该方法     
        flag.Parse()     
        // 输出结果     
        fmt.Printf("user=%v pwd=%v host=%v port=%v", user, pwd, host, port)     
        // 使用默认值,即就不要写 -h/-port 参数即可     
        // test.exe -u root -pwd 12345  --> 此时 -h/port 就会使用默认值
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
    
    
posted @ 2020-12-28 16:48  以赛亚  阅读(107)  评论(0编辑  收藏  举报