2

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

目前,我正在手动调用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]))
}
4

1 回答 1

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)

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

于 2013-10-23T13:48:11.700 回答