func InitFlag(more func()) { // 参数 pflag.BoolVar(&h, "h", false, "this help") pflag.BoolVar(&v, "v", false, "show version") pflag.StringVar(&ServiceFlag, "s", "", "control the service") pflag.BoolVar(&Debug, "d", false, "set debug mode") pflag.BoolVar(&Trace, "t", false, "set trace mode") pflag.BoolVar(&Docs, "docs", false, "Generate docs") if more != nil { more() } pflag.Parse() // 获取参数 if h { pflag.Usage() os.Exit(0) } if v { fmt.Printf(`Version: %s Build: %s Branch: %s Commit: %s Compiler: %s `, Version, Build, GitBranch, GitCommit, CompilerVersion) os.Exit(0) } _ = viper.BindPFlags(pflag.CommandLine) }
时间: 2023-12-05 22:48:20 浏览: 63
这是一个 Go 语言函数,它的作用是初始化命令行参数的解析。它接受一个参数 more,该参数是一个函数类型,可以传递更多的命令行参数解析相关的代码。在函数内部,它先使用 pflag 包提供的函数定义了一些命令行参数,包括 -h(显示帮助信息)、-v(显示版本信息)等等。然后它调用了 pflag.Parse() 函数来解析命令行参数。如果解析过程中出现了 -h 参数,它会显示帮助信息并退出程序;如果出现了 -v 参数,它会显示版本信息并退出程序;否则它会使用 viper 包将命令行参数绑定到相应的变量中。最后,函数返回。
阅读全文