go语言的命令行库
来源:互联网 发布:屏幕闪光灯软件 编辑:程序博客网 时间:2024/06/03 18:33
命令行应用通常很小,程序猿们也不喜欢为它编写注释。所以一些额外的工作,如解析参数有个合理的库来帮忙做就好了。
https://github.com/urfave/cli 这个项目因此而生。
安装:go get github.com/urfave/cli
以下的例子均来自官网:
(例1)
package mainimport ( "os" "github.com/urfave/cli")func main() { cli.NewApp().Run(os.Args)}
(例2)
package mainimport ( "fmt" "os" "github.com/urfave/cli")func main() { app := cli.NewApp() app.Name = "greet" app.Usage = "fight the loneliness!" app.Action = func(c *cli.Context) error { fmt.Println("Hello friend!") return nil } app.Run(os.Args)}
(例3)
package mainimport ( "fmt" "os" "github.com/urfave/cli")func main() { app := cli.NewApp() app.Action = func(c *cli.Context) error { fmt.Printf("Hello %q\n", c.Args().Get(0)) return nil } app.Run(os.Args)}
(例4)
package mainimport ( "fmt" "os" "github.com/urfave/cli")func main() { app := cli.NewApp() app.Flags = []cli.Flag { cli.StringFlag{ Name: "lang", Value: "english", Usage: "language for the greeting", }, } app.Action = func(c *cli.Context) error { name := "Nefertiti" if c.NArg() > 0 { name = c.Args().Get(0) } if c.String("lang") == "spanish" { fmt.Println("Hola", name) } else { fmt.Println("Hello", name) } return nil } app.Run(os.Args)}
还有几个小例子,情况差不多,请自行阅读。
然而,事情到这里并没有结束。。。
参数的解析还可以从yaml和toml里面获取,这是两个什么东东?
经常写配置文件的会用到ini, xml, json格式;后2个写起来太虐心,ini语法舒服但结构性缺陷决定它只能写简单配置。
因此yaml诞生(2001年)了,阮一峰在几个月前写了一篇教程:http://www.ruanyifeng.com/blog/2016/07/yaml.html
yaml不断发展,此后日益复杂,导致积重难返,github创始人主导了一个新的项目toml:http://mlworks.cn/posts/introduction-to-toml/
从语法简单性来说:ini > toml > yaml > json > xml
个人认为,没有必要强上yaml/toml,简单的用ini,稍复杂的json,很复杂的xml。
urfave/cli使用yaml/toml:
待补充。。。
阅读全文
0 0
- go语言的命令行库
- go语言的命令行库
- urfave/cli go语言的命令行库
- Go游戏服务器开发的一些思考(二十四):命令行库封装技巧
- golang命令行库cobra的使用
- Gnu提供的命令行库Readline使用实例
- go语言之脚本命令的使用
- Go 语言 - 命令文档
- Go语言执行系统命令
- go语言的代码编写,与命令调用
- GO语言的并发
- Go!漂亮的语言!
- Go语言的崛起
- Go语言的坑
- go语言的指针
- go 语言的了解
- Go语言的关键字
- Go语言的特性
- mybatis传入混合参数(多个不同类型的参数)
- iptables
- 股票数据分析
- 空间配置器
- Android Studio 下载与安装教程(最简单版)
- go语言的命令行库
- [Unity]用shader实现画面呈圆形缩放的效果。
- go异常处理
- 字符游戏-智能蛇
- 判断点与多边形的关系(3):角度和法
- 在eclipse上安装python插件,PyDev的过程-python简易教程(二)
- redis 3.2.6 on ubuntu 14.04
- 工作第一周。多条件以及时间语句的查询
- JDK、JRE、JVM三者间的关系