flag包实现了命令行参数的解析
本文只是简单入门,详细请看官方文档
func String
func String(name string, value string, usage string) *string
String用指定的名称、默认值、使用信息注册一个string类型flag。返回一个保存了该flag的值的指针。
package main
import (
"flag"
"fmt"
)
//第一个参数为name 第二个参数为默认值 第三个参数是描述
//需要注意的是接受的变量是一个指针
var mode = flag.String("mode", "", "process mode")
func main() {
//进行解析
flag.Parse()
//输出
fmt.Println(*mode)
}
在执行时使用 --name=value进行传递
命令行flag语法:
-flag
-flag=x
-flag x // 只有非bool类型的flag可以 bool类型使用=赋值
一个-和两个-是一样的
例如:
go run main.go --mode=hello
func StringVar
func StringVar(p *string, name string, value string, usage string)
StringVar用指定的名称、默认值、使用信息注册一个string类型flag,并将flag的值保存到p指向的变量。
代码:
package main
import (
"flag"
"fmt"
)
func main() {
var str string
fmt.Println("开始解析")
flag.StringVar(&str, "str", "", "parse string")
//解析参数
flag.Parse()
//输出
fmt.Println(str)
命令行输入:
go run test1.go -str="hello go"
结果:
开始解析
hello go
flag包支持的命令行参数类型有bool、int、int64、uint、uint64、float float64、string、duration。
flag参数 | 有效值 |
---|---|
字符串flag | 合法字符串 |
整数flag | 1234、0664、0x1234等类型,也可以是负数。 |
浮点数flag | 合法浮点数 |
bool类型flag | 1, 0, t, f, T, F, true, false, TRUE, FALSE, True, False。 |
时间段flag | 任何合法的时间段字符串。如”300ms”、”-1.5h”、”2h45m”。 合法的单位有”ns”、”us” /“µs”、”ms”、”s”、”m”、”h”。 |