为什么要使用pflag
Golang是一门性能十分强大语言。当我们在用Golang开发一个命令行程序的时候,我们经常会用到官方的flag库,但是官方的flag库使用并编译运行过后,你会发现它与我们经常使用的POSIX/GNU风格的命令行程序有所不同。比如说:
1 | >> go run artifact.go -h |
我们开发了一个名为artifact的命令行程序,运行go run artifact.go -h打印帮助信息,我们会发现,不同的flag为-flag,而不是--flag并且提供一个较短的别名如-f以供我们快速输入。
那么当我们使用了pflag之后,帮助信息就会变成这个样子:
1 | >> go run artifact.go -h |
可以看到,它已经是POSIX/GNU风格的命令行程序了。
怎么用
使用方式其实很简单,因为pflag是flag的直接替换包,我们只需要将import "flag"直接替换为flag "github.com/spf13/pflag"。
在替换之前,我们需要先安装pflag这个包,在命令行运行:
1 | go get github.com/spf13/pflag |
要进行测试,可以使用:
1 | go test github.com/spf13/pflag |
上面的命令行程序我们并没有使用pflag为不同的选项提供一个shorthands,直接替换后,我们可以使用如
1 | flag.StringVarP(&cookie, "cookie", "c", "xxxx", "携带的cookie,用来做身份验证") |
来直接为cookie提供一个-c的shorthands,效果为:
1 | >> go run artifact.go -h |