命令行库 - pflag
命令行风格
参数风格 | 前导符号 | 参数名 | 说明 | 示例 |
---|---|---|---|---|
GNU 风格 | -- |
字符串 | 长选项 | ls --help |
Unix/Posix 风格 | - |
单字符 | 短选项,可组合,-a -b 合并成 -ab |
ls -al |
BSD 风格 | 无 | 单字符 |
介绍
pflag
是标准库 flag
的替代品,支持 GNU 风格和 Unix/Posix 风格。
使用
普通模式
// define
func String(name string, value string, usage string) *string
// example
var username = pflag.String("username", "tom", "Input Your Name")
返回一个对应类型的指针
短选项模式
// define
func StringP(name, shorthand string, value string, usage string) *string
// example
var password = pflag.StringP("password", "p", "123456", "Input Your Password")
第二个参数是短选项的字符
自定义初始化变量模式
// define
func StringVar(p *string, name string, value string, usage string)
// example
var email string
pflag.StringVar(&email, "email", "colin@gmail.com", "Input Your Email")
自定义初始化变量短选项模式
// define
func StringVarP(p *string, name, shorthand string, value string, usage string)
// example
var sex string
pflag.StringVarP(&sex, "sex", "s", "male", "Input Your Sex")
测试
go run cmd/miniblog/main.go --username xxcheng --password 123 --email xxcheng@xxcheng.cn --sex 男
username:xxcheng,password:123,email:xxcheng@xxcheng.cn,sex:男
go run cmd/miniblog/main.go --username xxcheng -p aaa123 --email xxcheng@xxcheng.cn -s 女
username:xxcheng,password:aaa123,email:xxcheng@xxcheng.cn,sex:女
更多使用
弃用提示 Deprecated
// 普通弃用
_ = pflag.CommandLine.MarkDeprecated("sex", "不要用sex参数了")
_ = pflag.CommandLine.MarkShorthandDeprecated("password", "不要用password短选项了")
// 只弃用短选项
go run cmd/miniblog/main.go --username xxcheng --password 123 --email xxcheng@xxcheng.cn --sex 男
Flag --sex has been deprecated, 不要用sex参数了
username:xxcheng,password:123,email:xxcheng@xxcheng.cn,sex:男
go run cmd/miniblog/main.go --username xxcheng -p aaa123 --email xxcheng@xxcheng.cn -s 女
Flag shorthand -p has been deprecated, 不要用password短选项了
Flag --sex has been deprecated, 不要用sex参数了
username:xxcheng,password:aaa123,email:xxcheng@xxcheng.cn,sex:女
隐藏 help/usage 时的显示
_ = pflag.CommandLine.MarkHidden("password")
参考
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。
点赞!