Golang中国

好像需要自行解命令参数,以下是测试结果和参考方法,不知是否正确?

1.报错的写法:

go test -v -run="Test_main" -args "-c 1"
go test -v -run="Test_main" -args "-c=1"
go test -v -run="Test_main" -args -c=1

总之,args后面的自定义参数不能带减号-

2.正确的写法,上面“-c”去掉减号。

3.但是代码里面不能用如下传统方法:

flag.IntVar(&cmd, "c", 0, cmdhelp)
flag.Parse()

4.目前我的做法:

    for _, arg := range flag.Args() {
        arglist := strings.Split(arg, "=")
        if len(arglist) != 2 {
            arglist = strings.Split(arg, " ")
        }
        if len(arglist) != 2 {
            fmt.Printf(" unknown arg:%v\n", arg)
            continue
        }
        arg0 := strings.TrimSpace(arglist[0])
        if arg0 == "c" || arg0 == "C" {
            cmd = stringToInt1(strings.TrimSpace(arglist[1]))
        }
    }

    if cmd == 0 {
        fmt.Printf(`
Usage:
    go test -v -run="Test_main" -args "c 1"
or
    go test -v -run="Test_main" -args c=1
`)
        return
    }

依据:

go test -v -run="Test_main" -args "c 1" a=1 d=3 f="3e"
=== RUN   Test_main

os.Args:[**test.exe -test.v=true -test.run=Test_main c 1 a=1 d=3 f=3e]
flag.Args():[c 1 a=1 d=3 f=3e]

jimmykuu 于 2016-12-11 11:15 修改
0 回复
需要 登录 后方可回复, 如果你还没有账号你可以 注册 一个帐号。