在日常测试中,我们有时候不想把参数硬编码写死,往往会写配置。测试阶段我们经常使用的技巧就是命令行传参,介绍两种常用的方式:
方式一:os包
func main() {//1.os.Args会把命令行参数以数组方式存起来 用起来不是很方便if len(os.Args) > 0 {for i, v := range os.Args {logs.Debug("第%d个参数: %v",i,v)}}}

方式二:flag包
func main() {//1.os.Args会把命令行参数以数组方式存起来 用起来不是很方便//if len(os.Args) > 0 {// for i, v := range os.Args {// logs.Debug("第%d个参数: %v",i,v)// }//}//2.golang flag使用//flag包支持的命令行参数类型: bool、int、int64、uint、uint64、float float64、string、duration//传参常用格式://-flag xxx (使用空格,一个-符号)//还支持:-flag=xxx (使用等号,一个-符号)//--flag xxx (使用空格,两个-符号)//--flag=xxx (使用等号,两个-符号)//注意:使用bool类型必须使用等号方式 常用:-flag=xxxvar bucket, key stringvar timeout time.Durationvar count intvar married boolvar money float64//第一个参数表示要绑定到的类型地址 第二个参数表示的命令行中的flag名字 第三个参数表示的默认值 第四个参数为描述 当flag参数写错了 会用这个描述提示flag.StringVar(&bucket, "b", "", "Bucket name.")flag.StringVar(&key, "k", "", "Object key name.")flag.DurationVar(&timeout, "d", 0, "Upload timeout.")flag.IntVar(&count,"c",0,"count num")flag.BoolVar(&married,"m",false,"married flag")flag.Float64Var(&money,"mo",0,"money flag")//必须要parse才会把命令行中的参数 绑定到对应的指针变量中flag.Parse()logs.Debug("bucket=%v key=%v timeout=%v count=%v married=%v money=%v",bucket,key,timeout, count,married,money)}

注意下上面的不同类型的flag参数的有效值:
| flag参数类型 | 有效值 |
| string | 合法字符串 |
| int、int64、uint、uint64 | 1234、0664、0x1234等类型,可以是负数。 |
| float float64 | 合法浮点数 |
| bool | 只能是指定枚举值: 1, 0, t, f, T, F, true, false, TRUE, FALSE, True, False |
| duration | 任何合法的时间段字符串。 如”30s”、”1.2h”、”2h5m”。 合法的单位有”ns” ”us” “µs” ”ms” ”s” ”m” ”h” |
学习如逆水行舟,不进则退!加油!
!