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