[Go]GO语言实战-GO-FLY在线客服cobra库命令行参数解析
发布时间:2021-05-21 06:49:00 所属栏目:大数据 来源: https://www.jb51.cc
导读:最开始的解析命令行参数是使用的标准库里面的flag包,后来想增加新的参数的时候比较复杂和困难,因此使用cobra更加简单一些 比如执行go-fly server port 8081是运行项目 执行go-fly install是导入数据库 ? 目录结构: ? ? 增加cmd目录,作为cmd包,代码中直
最开始的解析命令行参数是使用的标准库里面的flag包,后来想增加新的参数的时候比较复杂和困难,因此使用cobra更加简单一些 比如执行go-fly server port 8081是运行项目 执行go-fly install是导入数据库 ? 目录结构: ? ? 增加cmd目录,作为cmd包,代码中直接定义全局变量和可导出的函数 , root.go里面是这样的 package cmd import ( "errors" fmtgithub.com/spf13/cobraos" ) var rootCmd = &cobra.Command{ Use: go-fly,Short: //gofly.sopans.com`, Args:args,Run: func(cmd *cobra.Command,args []string) { },} func args(cmd *cobra.Command,1)">) error{ if len(args)<1{ return errors.New(至少需要一个参数!) } return nil } func Execute() { if err := rootCmd.Execute(); err != nil { fmt.Println(err) os.Exit() } } func init() { rootCmd.AddCommand(versionCmd) rootCmd.AddCommand(serverCmd) rootCmd.AddCommand(installCmd) } ? 在入口文件中直接调用Excute方法进行使用 package main import ( github.com/taoshihan1991/imaptool/cmd ) func main() { cmd.Execute() } AddCommand就是在增加参数,比如versionCmd这个实例,定义在了version.go里面,执行go-fly version的时候打印版本号 package cmd import ( github.com/taoshihan1991/imaptool/config ) var versionCmd = &versionexample:go-fly version) { fmt.Println(go-fly "+config.Version) },} 直接访问效果: ? ? 加上参数效果: ? (编辑:北几岛) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |