go 命令行参数

什么是命令行参数 写命令行应用程序什么不可或缺?Go可以这样处理命令行参数

Go语言内置的flag包实现了命令行参数的解析,flag包使得开发命令行工具更为简单。os.Args如果你只是简单的想要获取命令行参数,可以像下面的代码示例一样使用os.Args来获取命令行参数。将上面的代码执行go build -o \”args_demo\”编译之后,执行:$ ./args_demo a b c dargs[0]=./args_demoargs[1]=aargs[2]=bargs[3]=cargs[4]=dos.Args是一个存储命令行参数的字符串切片,它的第一个元素是执行文件的名称。flag包基本使用本文介绍了flag包的常用函数和基本用法,更详细的内容请查看官方文档。导入flag包import flagflag参数类型flag包支持的命令行参数类型有bool、int、int64、uint、uint64、float float64、string、duration。定义命令行flag参数有以下两种常用的定义命令行flag参数的方法。flag.Type()基本格式如下:flag.Type(flag名, 默认值, 帮助信息)*Type 例如我们要定义姓名、年龄、婚否三个命令行参数,我们可以按如下方式定义:name := flag.String(\”name\”, \”张三\”, \”姓名\”😉age := flag.Int(\”age\”, 18, \”年龄\”😉married := flag.Bool(\”married\”, false, \”婚否\”😉delay := flag.Duration(\”d\”, 0, \”时间间隔\”😉需要注意的是,此时name、age、married、delay均为对应类型的指针。flag.TypeVar()基本格式如下: flag.TypeVar(Type指针, flag名, 默认值, 帮助信息) 例如我们要定义姓名、年龄、婚否三个命令行参数,我们可以按如下方式定义:var name stringvar age intvar married boolvar delay time.Durationflag.StringVar(&name, \”name\”, \”张三\”, \”姓名\”😉flag.IntVar(&age, \”age\”, 18, \”年龄\”😉flag.BoolVar(&married, \”married\”, false, \”婚否\”😉flag.DurationVar(&delay, \”d\”, 0, \”时间间隔\”😉flag.Parse()通过以上两种方法定义好命令行flag参数后,需要通过调用flag.Parse()来对命令行参数进行解析。支持的命令行参数格式有以下几种: -flag xxx (使用空格,一个-符号) –flag xxx (使用空格,两个-符号) -flag=xxx (使用等号,一个-符号) –flag=xxx (使用等号,两个-符号)其中,布尔类型的参数必须使用等号的方式指定。Flag解析在第一个非flag参数(单个”-“不是flag参数)之前停止,或者在终止符”–“之后停止。flag其他函数flag.Args() ////返回命令行参数后的其他参数,以[]string类型flag.NArg() //返回命令行参数后的其他参数个数flag.NFlag() //返回使用的命令行参数个数完整示例定义使用命令行参数使用提示:$ ./flag_demo -helpUsage of ./flag_demo: -age int 年龄 (default 18) -d duration 时间间隔 -married 婚否 -name string 姓名 (default \”张三\”😉正常使用命令行flag参数:$ ./flag_demo -name 沙河娜扎 –age 28 -married=false -d=1h30m沙河娜扎 28 false 1h30m0s[]04使用非flag命令行参数:$ ./flag_demo a b c张三 18 false 0s[a b c]30原文链接:https://www.liwenzhou.com/posts/Go/go_flag/本文作者:李文周,原创授权发布

go build不显示命令行窗口 go程序需要什么运行环境

本文内容由互联网用户自发贡献,该文观点仅代表作者本人。聚才发仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请发送邮件至 tenspace2022@163.com 举报,一经查实,本站将立刻删除。 本文链接:https://www.jucaifa.com/en/post/80335.html 商机洞察 金融谷 前沿技术

niuniuniuniu
Previous 2023年11月6日
Next 2023年11月6日

相关推荐

Leave a Reply

Your email address will not be published. Required fields are marked *