[Go]GO语言实战-GO-FLY在线客服cobra库命令行参数解析
最开始的解析命令行参数是使用的标准库里面的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) }, }
直接访问效果:
加上参数效果:
十年开发经验程序员,离职全心创业中,历时三年开发出的产品《唯一客服系统》
一款基于Golang+Vue开发的在线客服系统,软件著作权编号:2021SR1462600。一套可私有化部署的网站在线客服系统,编译后的二进制文件可直接使用无需搭开发环境,下载zip解压即可,仅依赖MySQL数据库,是一个开箱即用的全渠道在线客服系统,致力于帮助广大开发者/公司快速部署整合私有化客服功能。
开源地址:唯一客服(开源学习版)
官网地址:唯一客服官网
标签:
Go
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】博客园2025新款「AI繁忙」系列T恤上架,前往周边小店选购
【推荐】凌霞软件回馈社区,携手博客园推出1Panel与Halo联合会员
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用perf跟踪.NET程序的mmap泄露
· 日常问题排查-空闲一段时间再请求就超时
· Java虚拟机代码是如何一步一步变复杂且难以理解的?
· 领域驱动的事实与谬误 一 DDD 与 MVC
· SQL Server 2025 中的改进
· C# 14 新增功能一览,你觉得实用吗?
· C#/.NET/.NET Core优秀项目和框架2025年4月简报
· Java的"伪泛型"变"真泛型"后,会对性能有帮助吗?
· .NET + AI | Semantic Kernel vs Microsoft.Extension
· Linux系列:如何用perf跟踪.NET程序的mmap泄露
2019-09-08 [PHP] 现代化PHP之路:composer的镜像站设置