练习URL:
https://blog.csdn.net/sd653159/article/details/83381786
相信只要部署过线上服务,都知道启动参数一定是必不可少的,当你在不同的网络、硬件、软件环境下去启动一个服务的时候,总会有一些启动参数是不确定的,这时候就需要通过命令行模块去解析这些参数,urfave/cli是Golang中一个简单实用的命令行工具。
通过 go get github.com/urfave/cli 命令即可完成安装。
package main import ( "fmt" "log" "os" "github.com/urfave/cli" ) func main() { //实例化一个命令行程序 oApp := cli.NewApp() //程序名称 oApp.Name = "GoTool" //程序的用途描述 oApp.Usage = "To save the world" //程序的版本号 oApp.Version = "1.0.0" //预置变量 var host string var debug bool //设置启动参数 oApp.Flags = []cli.Flag{ //参数string, int, bool cli.StringFlag{ Name: "host", //参数名称 Value: "127.0.0.1", //参数默认值 Usage: "Server Address", //参数功能描述 Destination: &host, //接收值的变量 }, cli.IntFlag{ Name: "port, p", Value: 8888, Usage: "Server port", }, cli.BoolFlag{ Name: "debug", Usage: "debug mode", Destination: &debug, }, } //该程序执行的代码 oApp.Action = func(c *cli.Context) error { fmt.Println("Test") fmt.Printf("host=%v \n", host) fmt.Printf("port=%v \n", c.Int("port")) //不使用变量接收,直接解析 fmt.Printf("debug=%v \n", debug) return nil } //设置多个命令,不同的命令执行不同的操作 oApp.Commands = []cli.Command{ { //命令全称 Name: "lang", //命令简写 Aliases: []string{"l"}, //命令详细描述 Usage: "Setting language", //命令处理函数 Action: func(c *cli.Context) { //通过c.Args().First()获取命令行参数 fmt.Printf("language=%v \n", c.Args().First()) }, }, { Name: "encode", Aliases: []string{"e"}, Usage: "Setting encoding", Action: func(c *cli.Context) { fmt.Printf("encoding=%v \n", c.Args().First()) }, }, } if err := oApp.Run(os.Args); err != nil { log.Fatal(err) } }