package main
import (
"flag"
"fmt"
"os"
)
// golang命令行初识;可以后面多多了解一下强大的命令行工具cobra
// cobra 工具推荐了解的地址:https://blog.csdn.net/qq_42883074/article/details/123259512
// cobra 工具编写命令行案例:https://blog.csdn.net/qq_42883074/article/details/123276338
func main() {
// 定义几个变量,用于接收命令行的参数值
var user string
var pwd string
var host string
var port int
var creater string
//设置我们的命令行参数
flag.StringVar(&user, "u", "", "用户名,默认为空")
flag.StringVar(&pwd, "p", "", "密码,默认为空")
flag.StringVar(&host, "h", "localhost", "主机名,默认为localhost")
flag.IntVar(&port, "port", 3306, "端口号默认为3306")
flag.StringVar(&creater, "c", "", "创造者,默认为空")
flag.Parse() //注册flag
//从os.Args[1:]中解析注册的flag。
//必须在所有flag都注册好而未访问其值时执行
//未注册却使用flag -help时,会返回ErrHelp。
fmt.Printf("user=%v pwd=%v host=%v port=%v creater=%v \n", user, pwd, host, port, creater)
// os包中有一个Args,是一个string类型的切片,用来存储所有的命令行参数。
fmt.Println("命令行的参数有:", len(os.Args), "个 !!!")
// 变量os.Args切片,会将所有命令行参数存储到os.Args切片中,然后我们通过for-range去遍历切片打印出传入的参数
for i, v := range os.Args {
fmt.Printf("args[%v]=%v \n", i, v)
}
/*
可以使用命令 go run .\27.go -u root -p 123456 -h 127.0.0.1 -port 3306 -c luzhaoshan 运行该文件
*/
}