四时宝库

程序员的知识宝库

Golang 命令行工具cli(golang获取命令行参数)

golang 关于命令行处理开发中也是经常用到的,主要应用cli工具,通过示例了解一下。

示例:通过cli的name返回

package main

import (

"fmt"

"os"

"github.com/urfave/cli"

)

func main() {

app := cli.NewApp() //新建一个app

app.Name = "hello" //app name

app.Usage = "send one's respects to" //使用注释

app.Action = func(c *cli.Context) error { //具体行为动作

fmt.Println("Hello friend!")

return nil

}

app.Run(os.Args) //传入参数

}

执行:

#go install

#hello

Hello friend!

示例:接收传参

package main

import (

"fmt"

"os"

"github.com/urfave/cli"

)

func main() {

app := cli.NewApp()

app.Action = func(c *cli.Context) error {

fmt.Printf("Hello %q", c.Args().Get(0)) //通过上下文接收参数

return nil

}

app.Run(os.Args)

}

执行:使用flag判断传入参数

go run test.go 123

结果:

Hello "123"

示例:

package main

import (

"os"

"fmt"

"github.com/urfave/cli"

)

func main() {

var language string

app := cli.NewApp()

app.Flags = []cli.Flag {

cli.StringFlag{

Name: "language,l",

Value: "english",

Usage: "language for the greeting",

Destination: &language,

},

}

app.Action = func(c *cli.Context) error {

name := "friend"

if c.NArg() > 0 {

name = c.Args()[0]

}

if language == "spanish" {

fmt.Println("Hola", name)

} else {

fmt.Println("Hello", name)

}

return nil

}

app.Run(os.Args)

}

执行:

go run test.go -language=spanish 123

结果:

Hola 123

示例:

package main

import (

"os"

"sort"

"github.com/urfave/cli"

)

func main() {

app := cli.NewApp()

app.Flags = []cli.Flag {

cli.StringFlag{

Name: "lang, l",

Value: "english",

Usage: "Language for the greeting",

},

cli.StringFlag{

Name: "config, c",

Usage: "Load configuration from `FILE`",

},

}

app.Commands = []cli.Command{

{

Name: "complete",

Aliases: []string{"c"},

Usage: "complete a task on the list",

Action: func(c *cli.Context) error {

return nil

},

},

{

Name: "add",

Aliases: []string{"a"},

Usage: "add a task to the list",

Action: func(c *cli.Context) error {

return nil

},

},

}

sort.Sort(cli.FlagsByName(app.Flags))

sort.Sort(cli.CommandsByName(app.Commands))

app.Run(os.Args)

}

小结:cli工具用法比较简单,可以传参,调用执行命令等。

更多内容请关注头条号每日编程,每天进步一点。

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言