Go语言中使用flag包对命令行进行参数解析的方法
程序员文章站
2022-08-29 08:26:19
flag
flag 是go 标准库提供的解析命令行参数的包。
使用方式:
flag.type(name, defvalue, usage)
其中...
flag
flag 是go 标准库提供的解析命令行参数的包。
使用方式:
flag.type(name, defvalue, usage)
其中type为string, int, bool等;并返回一个相应类型的指针。
flag.typevar(&flagvar, name, defvalue, usage)
将flag绑定到一个变量上。
自定义flag
只要实现flag.value接口即可:
type value interface { string() string set(string) error }
通过如下方式定义该flag:
flag.var(&flagvar, name, usage)
示例
package main import "flag" import "fmt" import "strconv" type percentage float32 func (p *percentage) set(s string) error { v, err := strconv.parsefloat(s, 32) *p = percentage(v) return err } func (p *percentage) string() string { return fmt.sprintf("%f", *p) } func main() { nameptr := flag.string("name", "lyh", "user's name") ageptr := flag.int("age", 22, "user's age") vipptr := flag.bool("vip", true, "is a vip user") var email string flag.stringvar(&email, "email", "lyhopq@gmail.com", "user's email") var pop percentage flag.var(&pop, "pop", "popularity") flag.parse() others := flag.args() fmt.println("name:", *nameptr) fmt.println("age:", *ageptr) fmt.println("vip:", *vipptr) fmt.println("pop:", pop) fmt.println("email:", email) fmt.println("other:", others) }
$ ./command-line-flags name: lyh age: 22 vip: true email: lyhopq@gmail.com other: []
$ ./command-line-flags -name golang -age 4 -vip=true -pop 99 简洁 高并发 等等 name: golang age: 4 vip: true pop: 99 email: lyhopq@gmail.com other: [简洁 高并发 等等]
$ ./command-line-flags -h usage of ./command-line-flags: -age=22: user's age -email="lyhopq@gmail.com": user's email -name="lyh": user's name -pop=0.0: popularity -vip=true: is a vip user
上一篇: java学习笔记(基础篇)—变量与表达式