flag
是 Go 语言标准库中提供的一个命令行参数解析库,可以帮助开发者快速地解析命令行参数。
基本用法
使用 flag
包来解析命令行参数非常简单。首先,我们需要定义一些变量来存储解析后的参数值。然后,我们调用 flag
包中的函数来设置命令行参数选项,并将这些选项与我们定义的变量绑定在一起。最后,我们调用 flag.Parse()
函数来解析命令行参数。
下面是一个示例:
代码语言:javascript复制package main
import (
"flag"
"fmt"
)
func main() {
var name string
var age int
var married bool
var delay float64
flag.StringVar(&name, "name", "unknown", "your name")
flag.IntVar(&age, "age", 0, "your age")
flag.BoolVar(&married, "married", false, "are you married?")
flag.Float64Var(&delay, "delay", 0, "delay time")
flag.Parse()
fmt.Println("name:", name)
fmt.Println("age:", age)
fmt.Println("married:", married)
fmt.Println("delay:", delay)
}
在上面的示例代码中,我们使用 flag.StringVar()
、flag.IntVar()
、flag.BoolVar()
和 flag.Float64Var()
函数来设置命令行参数选项。这些函数的第一个参数是要绑定的变量的地址,第二个参数是选项名称,第三个参数是选项的默认值,第四个参数是选项的描述。我们也可以使用 flag.String()
、flag.Int()
、flag.Bool()
和 flag.Float64()
函数来获取命令行参数的值,而不是使用变量地址。
最后,我们调用 flag.Parse()
函数来解析命令行参数。在调用该函数之前,flag
包只会解析 os.Args[1:]
中的命令行参数。如果需要解析其他参数,请在调用 flag.Parse()
之前将它们添加到 os.Args
切片中。
下面是一些命令行示例:
代码语言:javascript复制$ go run main.go -name Alice -age 18 -married=true -delay 1.5
name: Alice
age: 18
married: true
delay: 1.5
代码语言:javascript复制$ go run main.go -name Bob
name: Bob
age: 0
married: false
delay: 0