mirror of
https://github.com/Estom/notes.git
synced 2026-04-14 10:21:08 +08:00
41 lines
1002 B
Go
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
|
|
}
|