golang 实战之 flag 包
欢迎访问我的 GitHub
这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos
本篇概览
开发命令行程序时,经常需要接受命令行传入的参数,flag 包提供了参数处理的功能,官方文档地址:https://golang.google.cn/pkg/flag/
demo 简介
写个使用 flag 包的 demo,用于接收命令行参数并打印出来,如果命令行没有输入该参数则提供默认值,go 的版本是 1.11.5;
实战源码
在 GOPAHT 目录下创建目录 src/hello,在此新建文件 hello.go,内容如下:
由以上代码可见,将命令行输入的参数传递到代码中的变量主要有两种方式:
第一种:StringVar 和 IntVar 等方法,第一个参数是变量的地址;
第二种:String 和 Int 等方法,将入参的值存入一个变量中,再将此变量的地址作为返回值返回;
遍历入参
flag 提供 Visit 方法,用于遍历每个有传入值的参数,Visit 方法的入参是个自定义方法,用于接收和出入命令行的传入值;
flag 提供 VisitAll 方法,用于遍历所有在代码中声明过的命令行参数,VisitAll 方法的入参是个自定义方法,用于接收和出入命令行的传入值;
运行验证
在 hello.go 所在目录执行命令 go run hello.go -name 超人 -address 深圳 -id 101,控制台输出如下,可见除了 age 参数没有输入,打印的是默认值,其他的参数都被绑定到正确的变量上了,并且有输入的参数和所有参数都能被遍历到:
输入命令 go run hello.go --help,可以看到帮助信息如下,代码中设置的描述信息也输出了:
源码下载
源码已经上传到 github,地址是:https://github.com/zq2599/blog_demos/tree/master/godemo/src/hello
以上就是 flag 包常用 API 的实战了,golang 的学习刚刚开始,读者您如果发现文章中的问题,还请及时指正,谢谢!
欢迎关注 InfoQ:程序员欣宸
版权声明: 本文为 InfoQ 作者【程序员欣宸】的原创文章。
原文链接:【http://xie.infoq.cn/article/45df535f387ea448afa96ae9f】。文章转载请联系作者。
评论