urfave/cli 是一个用于创建命令行应用程序的 Go 语言库,可以让你轻松地定义和解析命令行参数,并且可以生成帮助文档和自动补全等功能。下面是一个简单的示例,演示如何使用 urfave/cli 来创建一个命令行程序。

首先,我们需要安装 urfave/cli 库,可以使用以下命令进行安装:

$ go get github.com/urfave/cli

接下来,我们创建一个 main.go 文件,并导入 urfave/cli 库:

package main

import (
    "fmt"
    "os"

    "github.com/urfave/cli"
)

现在,我们可以定义我们的命令行应用程序了。在这个示例中,我们创建一个名为 hello 的命令,它接收一个参数 name,并输出 “Hello, name!” 的欢迎消息。

func main() {
    app := cli.NewApp()
    app.Name = "hello"
    app.Usage = "print a greeting message"

    app.Flags = []cli.Flag{
        cli.StringFlag{
            Name:  "name, n",
            Usage: "your name",
        },
    }

    app.Action = func(c *cli.Context) error {
        name := "World"
        if c.IsSet("name") {
            name = c.String("name")
        }
        fmt.Printf("Hello, %s!\n", name)
        return nil
    }

    err := app.Run(os.Args)
    if err != nil {
        fmt.Println(err)
        os.Exit(1)
    }
}

在这个代码片段中,我们首先创建了一个新的应用程序实例 app。然后,我们定义了程序名称和用途。接下来,我们定义了一个名为 name 的命令行参数,并在 app.Flags 中注册了它。最后,我们定义了命令行程序的动作,使用 fmt.Printf 输出欢迎消息。

现在,我们可以使用 go build 命令来构建可执行文件,并运行我们的程序:

$ go build -o hello
$ ./hello --name Alice
Hello, Alice!

以上示例中,我们使用了 --name 参数,并将其值设置为 Alice,因此程序输出了 “Hello, Alice!”。

当我们在命令行上输入 ./hello -h 或者 ./hello --help 时,可以看到程序自动生成的帮助文档:

$ ./hello --help
NAME:
   hello - print a greeting message

USAGE:
   hello [global options] command [command options] [arguments...]

COMMANDS:
   help, h  Shows a list of commands or help for one command

GLOBAL OPTIONS:
   --name value, -n value  your name
   --help, -h              show help (default: false)

这个帮助文档告诉我们如何使用 hello 命令,并列出了可用的命令行参数。