美文网首页
05-命令行参数

05-命令行参数

作者: 喝酸奶要舔盖__ | 来源:发表于2018-09-20 14:15 被阅读0次

    通过os包获取命令行参数

    • 获取方法
      • 导入os包
      • 然后通过os包的Args属性获取命令行参数
      package main
      
      import (
        "os"
      )
      
      func main() {
      fmt.Println(os.Args[0])
      fmt.Println(os.Args[1])
      fmt.Println(os.Args[2])
      fmt.Printf("%T\n", os.Args[0]) //string
      fmt.Printf("%T\n", os.Args[1]) //string
      fmt.Printf("%T\n", os.Args[2]) //string
      }
      
    • os包方法弊端
      • 如果用户少传了参数就会报错
      • 无论用户传入的是什么类型,最终获取到的都是字符类型
      • 传递参数的时候, 必须按照业务逻辑的顺序来传递, 传递的顺序不能被打乱

    通过flag包获取命令行输入

    • func StringVar(p *string, name string, value string, usage string)
      注意点: 无论传入什么类型的数据,返回的都是string类型
        //第一个参数: 把接收到的数据保存到哪
        //第二个参数: 用于接收的字段名称,通过-指定的名称来输入
        //第三个参数: 没有传入参数时候的默认值
        //第四个参数: 用户输入--help时候提示的信息
        var name string
        flag.StringVar(&name,"name","默认名称","接收用户姓名")
        var age string
        flag.StringVar(&age,"age","-1","接收用户年龄")
    
        //通过flag包接收用户输出的参数,还需要将接收到的参数注册到命令行中
        flag.Parse()
        fmt.Println("name = ", name)
        fmt.Printf("%T\n", name)
        fmt.Println("age = ", age)
        fmt.Printf("%T\n", age)
    
    • func String(name string, value string, usage string) *string
      注意点: 无论传入什么类型的数据,返回的都是string类型
      这个函数需要定义一个字符串指针来接收返回值
        var name *string = flag.String("name", "默认名称", "接收用户姓名")
        var age  *string = flag.String("age", "0", "接收用户年龄")
    
        //注册命令行参数
        flag.Parse()
    
        fmt.Println("name = ", *name)
        fmt.Println("age = ", *age)
        fmt.Printf("%T\n", *name)
        fmt.Printf("%T\n", *age)
    
    • func Int64(name string, value int64, usage string) *int64
      这个函数需要定义一个int64指针来接收返回值
    • func Float64(name string, value float64, usage string) *float64
      这个函数需要定义一个float64指针来接收返回值
        var name string
        flag.StringVar(&name,"name","默认名字","接收用户名字")
        var age *int64 = flag.Int64("age",int64(1),"接收用户年龄")
        var height *float64 = flag.Float64("height",float64(2),"接收用户身高")
        //注册命令行函数
        flag.Parse()
        fmt.Println("name = ", name)
        fmt.Println("age = ", *age)
        fmt.Println("height = ", *height)
        fmt.Printf("%T\n", name)
        fmt.Printf("%T\n", *age)
        fmt.Printf("%T\n", *height)
    

    相关文章

      网友评论

          本文标题:05-命令行参数

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