一.os.Args
demo:
//os.Args
func main() {
//os.Args是一个[]string字符串切片
if len(os.Args) > 0 {
// 遍历获取
for index, arg := range os.Args {
fmt.Printf("args[%d]=%v\n", index, arg)
}
}
}
一般来说,第一个参数是运行的二进制文件,第二个参数是指定的配置文件路径
那么稍微改一下就可以在项目中用了
在当前目录可以运行,我是windows系统,在二进制文件的上一级目录就运行不了
– 上一级目录,运行不了
– 当前目录可以正常运行
在ubuntu系统可以运行, windows不可以
我????等大佬指点
二.flag
flag:文档
图中value是如果你不传参数,使用的默认值
使用方法:
先 main.exe -help
然后 main.exe -configFile ./config.yaml来执行
// 在项目使用
var file string
var size int
flag.IntVar(&size, "size", 200, "文件大小")
flag.StringVar(&file, "configFile", "config.yaml", "配置文件")
flag.Parse()
fmt.Println("file--:", file)
func main() {
//定义命令行参数方式1
var name string
var age int
var ip string
var delay time.Duration
flag.StringVar(&name, "name", "小生", "姓名")
flag.StringVar(&ip, "ip", "ip", "addr")
flag.IntVar(&age, "age", 20, "年龄")
flag.DurationVar(&delay, "d", 0, "延迟的时间间隔")
//解析
flag.Parse()
fmt.Println(name, age, married, delay)
fmt.Println("ip has value ", *ip)
//返回命令行参数后的其他参数
fmt.Println(flag.Args())
//返回命令行参数后的其他参数个数
fmt.Println(flag.NArg())
//返回使用的命令行参数个数
fmt.Println(flag.NFlag())