1、先看代码
package main
import (
"flag"
"fmt"
"time"
)
// 1、定义命令行参数对应的变量,是这四个变量都指针类型
var cliUsername = flag.String("name", "jack", "Input Your Name")
var cliAge = flag.Int("age", 18, "Input Your Age")
var cliGender = flag.String("gender", "male", "Input Your Gender")
var cliPeriod = flag.Duration("period", 1*time.Second, "sleep period")
func main() {
//有flag.Parse()时,会把用户传递的命令行参数解析为对应变量的值
flag.Parse()
// flag.Args() 函数返回没有被解析的命令行参数
// func NArg() 函数返回没有被解析的命令行参数的个数
fmt.Printf("args=%s, num=%d\n", flag.Args(), flag.NArg())
for i := 0; i != flag.NArg(); i++ {
fmt.Printf("arg[%d]=%s\n", i, flag.Arg(i))
}
// 输出命令行参数
fmt.Println("name=", *cliUsername)
fmt.Println("age=", *cliAge)
fmt.Println("gender=", *cliGender)
fmt.Printf("period=", *cliPeriod)
}
2、有flag.Parse()
有flag.Parse()时,会把用户传递的命令行参数解析为对应变量的值
3、无flag.Parse()时,是不会把用户传递的命令行参数解析为对应变量的值
再运行代码,传同样的name=jeff,得到的结果还是定义的变量