urfave与cli命令行模块如何在Golang中使用?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
安装
通过去github.com/urfave/cli命令即可完成安装。
正文
使用了urfave/cli之后,你的程序就会变成一个命令行程序,以下就是通过urfave/cli创建的一个最简单的命令行程序,它设定了一些基础的信息,这个程序的最终只是简单的打印了测试信息。
package main import ( ,“;github.com/urfave/cli" ,“os" ,“log" ,“fmt" ) , func main (), { ,//实例化一个命令行程序 ,oApp :=, cli.NewApp () ,//程序名称=,oApp.Name “GoTool" ,//程序的用途描述=,oApp.Usage “用节省;从而world" ,//程序的版本号=,oApp.Version “1.0.0" ,//该程序执行的代码=,,oApp.Action func (c * cli.Context), error { ,fmt.Println (“Test") return nil ,} ,//启动 ,if err :=, oApp.Run (os.Args);, err !=, nil { ,log.Fatal (err) ,} ,/* ,结果: ,(root@localhost cli) # go run main.go 帮助 , ,名字: ,,GoTool 作用;用节省,世界 , ,用法: ,main [global 选项],command [command 选项],[论点…] , ,版本: ,1.0.0 , ,命令: ,帮助,h Shows a list of commands 或是help for one 命令 , ,GLOBAL 选项: ,帮助,-h show 帮助 ——版本,大敌;-v print 从而版本 , ,(root@localhost cli) # go run main.go ,测试 ,*/}我们看到运行去主要运行。去帮助之后会输出一些帮助信息,说明你的程序已经成功成为一个命令行程序,接着使用命令主要运行。去运行这个程序,结果是打印了测试信息,所以这个程序实际运行的函数由oApp。行动来控制,你后面的代码应该都在这个函数的内部去实现。
接下来我们设定一些常见的启动参数,非常的简单,代码如下
package main import ( ,“;github.com/urfave/cli" ,“os" ,“log" ,“fmt" ) , func main (), { ,//实例化一个命令行程序 ,oApp :=, cli.NewApp () ,//程序名称=,oApp.Name “GoTool" ,//程序的用途描述=,oApp.Usage “用节省;从而world" ,//程序的版本号=,oApp.Version “1.0.0" , ,//预置变量 ,var host 字符串 var debug 保龄球 , ,//设置启动参数=,oApp.Flags [] cli.Flag { ,//参数类型字符串,整数,布尔值 ,cli.StringFlag { ,名字:,“host",,,,//参数名字 ,值:,“127.0.0.1",,,//参数默认值 ,用法:,“Server Address",,//参数功能描述 ,目的地:和主机,,,,//接收值的变量 }, ,cli.IntFlag { ,名字:,“港、p" 8888年,值:,, ,用法:,“Server port" }, ,cli.BoolFlag { ,名字:,“debug", ,用法:,“debug mode" ,目的地:和调试, }, ,} , ,//该程序执行的代码=,,oApp.Action func (c * cli.Context), error { ,fmt.Printf(“主机=% v \ n",主机) ,fmt.Printf(“主机=% v \ n", c.Int (“port")),//不使用变量接收,直接解析 ,fmt.Printf(“主机=% v \ n",调试) ,/* ,结果: ,(root@localhost cli) # go run main.go ——port 7777 ,主机=127.0.0.1 ,主机=7777 ,主机=false , ,(root@localhost cli) # go run main.go 帮助 ,名字: GoTool 作用;用才能节省,从而世界 , ,用法: main 才能;[global 选项],command [command 选项],[论点…] , ,版本: ,1.0.0 , ,命令: ,帮助,h Shows a list of commands 或是help for one 命令 , ,GLOBAL 选项: ——才能host value ,, Server Address (默认值:,“127.0.0.1") ——port 价值,才能,-p value Server port (默认值:,8888) ——debug 才能,,,,debug 模式 ,,,帮助-h ,,, show 帮助 ——版本,才能,-v , print 从而版本 ,*/return nil ,} ,//启动 ,if err :=, oApp.Run (os.Args);, err !=, nil { ,log.Fatal (err) }大敌; }