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()
扫描二维码关注公众号,回复:
5354245 查看本文章
func main() {
var configPath string // 表示配置文件的路径
var path int // 表示日志的级别
flag.StringVar(&configPath, "s", "", "input config path") // 相当于配置
flag.IntVar(&path, "l", 0, "input log level")
flag.Parse() // 解析命令行参数, 相当于使配置生效
fmt.Println(configPath)
fmt.Println(path)
}
D:\golang\workspace\project>example.exe -s c:/project/config.ini -l 10 // 输入两个命令行参数
c:/project/config.ini
10
D:\golang\workspace\project>