简介


flagflagflag


  • 不显示支持短选项。当然上一篇文章中也提到过可以通过将两个选项共享同一个变量迂回实现,但写起来比较繁琐;


TypeTypeVar


bool/int/uint/stringtime.Duration



go-flags


go-flagsflag


  • 支持短选项(-v)和长选项(--verbose);


-aux


  • 同一个选项可以设置多个值;


  • 支持所有的基础类型和 map 类型,甚至是函数;


  • 支持命名空间和选项组;


  • 等等。



go-flags


快速开始


go-flags


由于是第三方库,使用前需要安装,执行下面的命令安装:



import



完整示例代码如下:



go-flags


shortlongdescription---


  • 声明选项变量;


go-flags



编译、运行代码(我的环境是 Win10 + Git Bash):



短选项:



长选项:



Verbose-v--verbosetrue


多个短选项:



多个长选项:



短选项 + 长选项:



短选项合写:




基本特性



支持丰富的数据类型


go-flagsflag


int/int8/int16/int32/int64uint/uint8/uint16/uint32/uint64float32/float64boolstring


string


  • 函数类型。



如果字段是基本类型的切片,基本解析流程与对应的基本类型是一样的。切片类型选项的不同之处在于,遇到相同的选项时,值会被追加到切片中。而非切片类型的选项,后出现的值会覆盖先出现的值。


下面来看一个示例:



PtrStringSlice[]*stringgo-flags


--pstrslice



Call--call



go-flagsstringmap:key:value--intmap




常用设置


go-flagsrequireddefault


requiredErrRequired


defaultrequired


看下面示例:



defaultDefaultrequired




高级特性



选项分组




--help



输出的帮助信息中,也是按照我们设定的分组显示了,便于查看。


子命令


go-flagsgo versiongo buildgo rungit statusgit commitversion/build/run/status/commitgo-flags



go-flagsCommander



---go-flagscommand


math


接下来看看如何使用:



*/


其他


go-flags/v/verbose


参考








欢迎关注我的微信公众号【GoUpUp】,共同学习,一起进步~





本文由博客一文多发平台 OpenWrite 发布!