ThinkSSL🔒 一键申购 5分钟快速签发 30天无理由退款 购买更放心 广告
## 获取命令行参数 `os.Args`获取命令行参数 ``` // test.go func main() { if len(os.Args) > 0 { for index, arg := range os.Args { fmt.Printf("args[%d]=%v\n", index, arg) } } } // 编译 go build -o test.exe test.go // 执行 test.exe a b c // 输出: args[0]=test.exe args[1]=a args[2]=b args[3]=c ``` `os.Args`是一个存储命令行参数的字符串切片,第一个参数是命令本身。 ## 参数类型 `flag`包支持的参数类型`bool`、`int`、`int64`、`uint`、`uint64`、`float`、`float64`、`string`、`duration` ## 定义命令行参数 ### flag.Type() `flag.Type(flag名, 默认值, 帮助信息) *Type` ~~~ name := flag.String("name", "张三", "姓名") age := flag.Int("age", 18, "年龄") married := flag.Bool("married", false, "婚否") delay := flag.Duration("d", 0, "时间间隔") ~~~ ### flag.TypeVar() `flag.TypeVar(Type指针, flag名, 默认值, 帮助信息)` ~~~go var name string var age int var married bool var delay time.Duration flag.StringVar(&name, "name", "张三", "姓名") flag.IntVar(&age, "age", 18, "年龄") flag.BoolVar(&married, "married", false, "婚否") flag.DurationVar(&delay, "d", 0, "时间间隔") ~~~ ## flag其他函数 ~~~go flag.Args() ////返回命令行参数后的其他参数,以[]string类型 flag.NArg() //返回命令行参数后的其他参数个数 flag.NFlag() //返回使用的命令行参数个数 ~~~ 示例: ~~~go func main() { //定义命令行参数方式1 var name string var age int var married bool var delay time.Duration flag.StringVar(&name, "name", "张三", "姓名") flag.IntVar(&age, "age", 18, "年龄") flag.BoolVar(&married, "married", false, "婚否") flag.DurationVar(&delay, "d", 0, "延迟的时间间隔") //解析命令行参数 flag.Parse() fmt.Println(name, age, married, delay) //返回命令行参数后的其他参数 fmt.Println(flag.Args()) //返回命令行参数后的其他参数个数 fmt.Println(flag.NArg()) //返回使用的命令行参数个数 fmt.Println(flag.NFlag()) ~~~