[Go]GO语言实战-GO-FLY在线客服cobra库命令行参数解析
2023-02-18 15:41:18 时间
最开始的解析命令行参数是使用的标准库里面的flag包,后来想增加新的参数的时候比较复杂和困难,因此使用cobra更加简单一些
比如执行go-fly server port 8081是运行项目
执行go-fly install是导入数据库
目录结构:
增加cmd目录,作为cmd包,代码中直接定义全局变量和可导出的函数 , root.go里面是这样的
package cmd import ( "errors" "fmt" "github.com/spf13/cobra" "os" ) var rootCmd = &cobra.Command{ Use: "go-fly", Short: "go-fly", Long: `简洁快速的GO语言WEB在线客服 https://gofly.sopans.com`, Args:args, Run: func(cmd *cobra.Command, args []string) { }, } func args(cmd *cobra.Command, args []string) error{ if len(args)<1{ return errors.New("至少需要一个参数!") } return nil } func Execute() { if err := rootCmd.Execute(); err != nil { fmt.Println(err) os.Exit(1) } } 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 ( "fmt" "github.com/spf13/cobra" "github.com/taoshihan1991/imaptool/config" ) var versionCmd = &cobra.Command{ Use: "version", Short: "example:go-fly version", Run: func(cmd *cobra.Command, args []string) { fmt.Println("go-fly "+config.Version) }, }
直接访问效果:
加上参数效果:
相关文章
- 基于Linux系统的本地Yum源搭建与配置(ISO方式、RPM方式)
- 【Golang】反射的三大laws
- Good-code-books 前端经典常用好书分享
- git实用复习篇之一步到位!
- Python分布式任务队列Celery,Django中如何实现异步任务和定时任务
- Django应用上线前有哪些注意事项?如何使用同步或异步容器启动Django应用?
- 跟着官方文档学Python——Django Rest framework
- Go语言基础速刷手册
- 深入Git —— 从底层对象到常用命令速刷手册
- Java基础系列(25)- break、continue、goto
- 云图说|将源端MongoDB业务搬迁至华为云DDS的几种方式
- 【Google Cloud技术咨询】「Contact Center AI」引领我们走向高度智能客服的时代
- 【Git技术专题】如何使用git中的tag进行版本开发控制?
- Golang做一个IM即时通信系统
- 为什么Go的协程调度很快?
- 读猿码系列——1. gRPC+Etcd3的服务发现&负载均衡
- 读猿码系列——3. 从filebeat和go-stash深入日志收集及处理(filebeat篇)
- 读猿码系列——4. 从filebeat和go-stash深入日志收集及处理(go-stash篇)
- 读猿码系列——5.解析Golang常用定时任务库gron和cron
- 读猿码系列——6.Golang中用幂等思路解决缓存击穿的方案:singleflight