Pflag Viper Cobra

504 阅读1分钟

命令行参数可以通过Pflag来解析,配置文件可以通过Viper来解析,应用的命令行框架则可以通过Cobra来实现。 Pflag 主要是通过创建 Flag 和 FlagSet 来使用的。

我们先来看下 Flag:

Pflag 可以对命令行参数进行处理,一个命令行参数在 Pflag 包中会解析为一个 Flag 类型的变量。Flag 是一个结构体,定义如下: ``


type Flag struct {
    Name                string // flag长选项的名称
    Shorthand           string // flag短选项的名称,一个缩写的字符
    Usage               string // flag的使用文本
    Value               Value  // flag的值
    DefValue            string // flag的默认值
    Changed             bool // 记录flag的值是否有被设置过
    NoOptDefVal         string // 当flag出现在命令行,但是没有指定选项值时的默认值
    Deprecated          string // 记录该flag是否被放弃
    Hidden              bool // 如果值为true,则从help/usage输出信息中隐藏该flag
    ShorthandDeprecated string // 如果flag的短选项被废弃,当使用flag的短选项时打印该信息
    Annotations         map[string][]string // 给flag设置注解
}

Flag 的值是一个 Value 类型的接口,Value 定义如下:


type Value interface {
    String() string // 将flag类型的值转换为string类型的值,并返回string的内容
    Set(string) error // 将string类型的值转换为flag类型的值,转换失败报错
    Type() string // 返回flag的类型,例如:string、int、ip等
}