go 命令行参数

os.Agrs 是一个string型的切片, 用于储存所有的命令行参数

如果不传入命令行参数, 则os.Args中只有一个参数 -- 程序本身

func main() {
    fmt.Println(len(os.Args))	// 1
    for k, v := range os.Args {
        fmt.Printf("%d --- %s\n", k, v)		// 0 --- example
    }
}

输出的结果 'example' 就是此go文件所在的目录名称, 即编译时的目录

向命令行传入两个参数(参数之间以空格分隔), 输出:

3
0 --- example
1 --- d
2 --- d:/test.txt

 

flag包对命令行的支持

它里面的如下方法, 可以自动解析命令行参数. 只需要设置(调用)这些方法即可

flag.BoolVar()

flag.StringVar()

flag.IntVar()

func main() {
    var configPath string    // 表示配置文件的路径
    var lev int             // 表示日志的级别
	
    // 参数1将输入的参数赋值给此变量, 参数2为命令, 参数3为默认值(如果不输参数时使用), 参数4为提示文字
    flag.StringVar(&configPath, "p", "defStr", "input config path")     // 设置配置
    flag.IntVar(&lev, "l", 0, "input log level")

    flag.Parse()    // 解析命令行参数, 相当于使配置生效
	
    fmt.Println(configPath)
    fmt.Println(lev)
}

D:\golang\workspace\project>example.exe -p c:/project/config.ini  -l 1       // 输入参数(以 命令 开始)
c:/project/config.ini
1

D:\golang\workspace\project>example.exe                         // 默认值(不输入参数, 将使用这个作为默认的参数)
defStr
0

D:\golang\workspace\project>example.exe -help              // -hlep可以查看命令
Usage of example.exe:
  -l int
        input log level                                                            // 提示文字
  -p string
        input config path (default "defStr")

D:\golang\workspace\project>

你可能感兴趣的:(go 命令行参数)