介绍

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)   }大敌;   }