余子越的博客
Toggle navigation
余子越的博客
主页
计算机网络
大数据分析
系统与工具
编程之路
容器引擎
作者
归档
标签
golang之命令行参数使用总结
2021-01-04 15:50:18
15
0
0
yuziyue
[TOC] # 一. flag - 最基础的命令参数解析库flag,他支持的类型较少,使用也不是太灵活,但是对于简单的程序已经足够使用了,如果想使用更高级的参数,请选择功能更强的 go-flags。 ``` package main import ( "flag" "fmt" "os" "time" ) var ( version bool help bool port int host string score float64 sites argsSlice period time.Duration ) func main() { new(ArgsParser).Parse() fmt.Println("score:", score) fmt.Println("host:", host) fmt.Println("port:", port) fmt.Println("period:", period) for index, site := range sites { fmt.Println("site", index, site) } } func (a *ArgsParser) Parse() { // basic type flag.BoolVar(&help, "help", false, "show this help!") flag.BoolVar(&version, "version", false, "show version!") flag.Float64Var(&score, "score", 0.5, "score") flag.IntVar(&port, "port", 8080, "listen port") flag.StringVar(&host, "host", "127.0.0.1", "host") // slice args: -site a.com -site b.com flag.Var(&sites, "site", "site host") // time duration: 1s 1h 1m 1h2m3s 1.5s flag.DurationVar(&period, "period", 1*time.Second, "sleep period") flag.Usage = a.Usage flag.Parse() if version { fmt.Println("program version 1.0.0") os.Exit(0) } else if help { flag.Usage() os.Exit(0) } } type ArgsParser struct{} type argsSlice []string func (a *ArgsParser) Usage() { fmt.Println("Usage: ") flag.PrintDefaults() } func (a *argsSlice) String() string { return fmt.Sprintf("%v", []string(*a)) } func (a *argsSlice) Set(value string) error { *a = append(*a, value) return nil } ``` - 使用示例 ``` go run test.go -host 10.10.10.119 -port 8080 -site a.com -site b.com score: 0.5 host: 10.10.10.119 port: 8080 period: 1s site 0 a.com site 1 b.com go run test.go -version program version 1.0.0 go run test.go -h Usage: -help show this help! -host string host (default "127.0.0.1") -period duration sleep period (default 1s) -port int listen port (default 8080) -score float score (default 0.5) -site value site host -version show version! ``` # 二. go-flags 相比于内置flag,go-flags提供了比标准库flag更多的选项,使用更方便,项目地址:https://github.com/jessevdk/go-flags # 三. cobra 一个命令行解析的终极工具,非常多的有名开源项目都在使用,项目地址:https://github.com/spf13/cobra <br><br><br>
上一篇:
Spark读取数据与保存数据
下一篇:
golang之[]byte相互转换
0
赞
15 人读过
新浪微博
微信
腾讯微博
QQ空间
人人网
文档导航