Files
notes_estom/Go/gopkg/flag/flag.go
2021-09-03 05:34:34 +08:00

41 lines
1002 B
Go

// flag 包提供很多解析命令行参数的函数
// 常用解析、绑定等等
package main
import (
"flag"
"fmt"
"time"
)
var name = flag.String("name", "", "-name=cola")
var age int
func main() {
//
// 命令行参数解析
//
flag.IntVar(&age, "age", 0, "-age=10") // 将命令行的值绑定到变量上
t := flag.Duration("spent", 1*time.Second, "-spent=1s") // 单位必须正确:"ns", "us" (or "µs"), "ms", "s", "m", "h"
flag.Parse()
flag.PrintDefaults()
// -age int
// -age=10
// -name string
// -name=cola
// -spent duration
// -spent=1s (default 1s)
fmt.Println(flag.Parsed()) // true
fmt.Println(*t)
//
// 命令行参数数量
//
// go run flag.go -name go 233
fmt.Println(flag.Arg(0)) // 233 // 获取第 i+1 和非 flag 命令行参数值
fmt.Println(flag.Args()) // [233] // 全部非 flag 命令行参数值
fmt.Println(flag.NArg()) // 1
fmt.Println(flag.NFlag()) // 1 // 成功解析 1 个 flag
}