flag包提供命令行参数解析功能
常用属性
-
常用函数
Bool: 设置bool类型参数名、默认值、帮助信息并返回解析bool的指针
- Int:设置Int类型参数名、默认值、帮助信息并返回解析Int的指针
- Uint:设置Uint类型参数名、默认值、帮助信息并返回解析Uint的指针
- Int64:设置Int64类型参数名、默认值、帮助信息并返回解析Int64的指针
- Uint64:设置Uint64类型参数名、默认值、帮助信息并返回解析Uint64的指针
- Float64:设置Float64类型参数名、默认值、帮助信息并返回解析Float64的指针
- String: 设置String类型参数名、默认值、帮助信息并返回解析String的指针
- Duration:设置Duration类型参数名、默认值、帮助信息并返回解析Duration的指针
- BoolVar/IntVar/UintVar/Int64Var/Uint64Var/Float64Var/StringVar/DurationVar:设置
Duration 类型参数名、默认值、帮助信息并将解析值通过参数指针设置给变量
- Parse:解析参数
- PrintDefaults:打印参数详情信息
- NFlag:匹配设置参数名的参数个数
- NArg: 匹配未设置参数名的参数个数
- Args: 获取所有未设置参数名的参数值
实操
main.go
```go package main
import ( “flag” “fmt” “time” )
func main() { addr := flag.String(“H”, “127.0.0.1”, “Listen Addr”) port := flag.Int(“p”, 8080, “Listen port”) interval := flag.Duration(“i”, 3 * time.Second, “heartbeat interval”) verbose := flag.Bool(“v”, false, “debug module”) help := flag.Bool(“h”, false, “help”)
flag.Usage = func() {
fmt.Println(`
Usage: flag [-H addr] [-p port] [-i 3s] [-v] [-h] args…
Options:`) flag.PrintDefaults() } flag.Parse()
if *help {
flag.Usage()
} else {
fmt.Printf("flag: %d, arg: %d\n", flag.NFlag(), flag.NArg())
fmt.Println("flag:")
fmt.Printf("\t%s: %#v\n", "name", *addr)
fmt.Printf("\t%s: %#v\n", "port", *port)
fmt.Printf("\t%s: %#v\n", "interval", *interval)
fmt.Printf("\t%s: %#v\n", "verbose", *verbose)
fmt.Println("arg:")
for i, arg := range flag.Args() {
fmt.Println("\t%d: %#v\n", i, arg)
}
}
}
<a name="KPvWu"></a>
## 执行结果
```bash
PS D:\projects\golangLearn\basicproject> go.exe run .\main.go
flag: 0, arg: 0
flag:
name: "127.0.0.1"
port: 8080
interval: 3000000000
verbose: false
arg: