一.os.Args

demo:

//os.Args 
func main() {
    //os.Args是一个[]string字符串切片
    if len(os.Args) > 0 {
        // 遍历获取
        for index, arg := range os.Args {
            fmt.Printf("args[%d]=%v\n", index, arg)
        }
    }
}

一般来说,第一个参数是运行的二进制文件,第二个参数是指定的配置文件路径

那么稍微改一下就可以在项目中用了


在当前目录可以运行,我是windows系统,在二进制文件的上一级目录就运行不了
– 上一级目录,运行不了

– 当前目录可以正常运行
在ubuntu系统可以运行, windows不可以

我????等大佬指点

二.flag

flag:文档

图中value是如果你不传参数,使用的默认值
使用方法:
先 main.exe -help

然后 main.exe -configFile ./config.yaml来执行

// 在项目使用
var file string
    var size int
    flag.IntVar(&size, "size", 200, "文件大小")
    flag.StringVar(&file, "configFile", "config.yaml", "配置文件")
    flag.Parse()
    fmt.Println("file--:", file)

func main() {
    //定义命令行参数方式1
    var name string
    var age int
    var ip string
    var delay time.Duration
    flag.StringVar(&name, "name", "小生", "姓名")
    flag.StringVar(&ip, "ip",  "ip", "addr")
    flag.IntVar(&age, "age", 20, "年龄")
    flag.DurationVar(&delay, "d", 0, "延迟的时间间隔")

    //解析
    flag.Parse()
    fmt.Println(name, age, married, delay)
    fmt.Println("ip has value ", *ip)
    //返回命令行参数后的其他参数
    fmt.Println(flag.Args())
    //返回命令行参数后的其他参数个数
    fmt.Println(flag.NArg())
    //返回使用的命令行参数个数
    fmt.Println(flag.NFlag())
分类: go

0 条评论

发表评论

Avatar placeholder

您的电子邮箱地址不会被公开。 必填项已用*标注

站点统计

  • 文章总数:304 篇
  • 分类总数:19 个
  • 标签总数:189 个
  • 运行天数:852 天
  • 访问总数:460554 人次
ICP备案号: 辽ICP备20003309号