我们经常需要写一些配置性的内容,而这些配置可能非常的复杂,信息比较多,可扩展性多。这时候经常会有一种技巧就是提供默认配置,同时提供自定义配置方法,因为很多人可能使用最常用的几个配置就可以了,这种做法在go里面非常常见。
这里举一个pflag的例子:
var CommandLine = NewFlagSet(os.Args[0], ExitOnError)
// NewFlagSet returns a new, empty flag set with the specified name,
// error handling property and SortFlags set to true.
func NewFlagSet(name string, errorHandling ErrorHandling) *FlagSet {
f := &FlagSet{
name: name,
errorHandling: errorHandling,
argsLenAtDash: -1,
interspersed: true,
SortFlags: true,
}
return f
}
CommandLine 返回一个 默认的*FlagSet 配置
命令第一个入参作为名称,解析错误执行os.Exit(2)
同时提供了NewFlagSet,允许用户对命令名称,错误退出码自定义指定。因为我们一般使用默认的就足够了,所以这里专门写了一个默认的配置。