在命令行解析中引发自定义错误

时间:2013-10-23 13:27:55

标签: go go-flag

我正在使用flag模块来解析我的标志,但希望至少有一个位置参数。如果没有足够的位置参数,我如何显示使用帮助,就像在parser.error的python中一样?

目前,我手动调用os.Exit,但这应该是一个简单的错误真的很麻烦:

package main

import "flag"
import "fmt"
import "os"

func main() {
  flag.Parse()
  if flag.NArg() != 1 {
    println("This program needs exactly one argument")
    flag.Usage()
    os.Exit(2)
  }
  fmt.Printf("You entered %d characters", len(flag.Args()[0]))
}

1 个答案:

答案 0 :(得分:2)

要做这样的事情,我使用log包。

package main

import "flag"
import "fmt"
import "os"
import "log"

func main() {
  flag.Parse()
  if flag.NArg() != 1 {
    log.Fatalln("This program needs exactly one argument")
  }
  fmt.Printf("You entered %d characters", len(flag.Args()))
}

log.Fatal()并且它的姐妹方法(log.Fatalln()log.Fatalf()等)都是帮助者,他们只需log.Print(),然后使用os.exit(1)跟进。< / p>

编辑 - 添加链接 http://golang.org/pkg/log/#Fatalln