nbsp; 可以把struct导入了。
4 默认值
我们有两种默认值,一种是不使用这个标志位的时候默认值,另外一种是声明使用这个标志位,但是不赋值,这种对应的是NoOptDefVal。
Parsed Arguments |
Parsed Arguments Resulting Value |
--flagname=1357 |
ip=1357 |
--flagname |
ip=4321 |
[nothing] |
ip=1234 |
5 放弃标志位
flags.MarkDeprecated("badflag", "please use --good-flag instead")
还告诉了用户,新的标志位是啥
6 放弃短标志位
flags.MarkShorthandDeprecated("noshorthandflag", "please use --noshorthandflag only")
只放弃短的,长标志位依然可以使用
7 隐藏一个标志位
flags.MarkHidden("secretFlag")
所以,没有文档字符串了
8 多标志位
--old-flag-name == --new-flag-name
1 func aliasNormalizeFunc(f *pflag.FlagSet, name string) pflag.NormalizedName {
2
3 switch name {
4 case "old-flag-name":
5 name = "new-flag-name"
6 break
7 }
8 return pflag.NormalizedName(name)
9 }
10
11 myFlagSet.SetNormalizeFunc(aliasNormalizeFunc)
9 替换原生的flag
完美兼容原生的,只需要改动一点点,你就可以用这个库了
1 import (
2 goflag "flag"
3 flag "github.com/spf13/pflag"
4 )
5
6 var ip *int = flag.Int("flagname", 1234, "help message for flagname")
7
8 func main() {
9 flag.CommandLine.AddGoFlagSet(goflag.CommandLine)
10 flag.Parse()
11 }
核心是import这部分