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

标签 go go-flag

我正在使用flag模块来解析我的标志,但希望至少有一个位置参数。当没有足够的位置参数时,如何显示使用帮助,就像在 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]))
}

最佳答案

为了执行此类操作,我使用 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

关于go - 在命令行解析中引发自定义错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19543011/

相关文章:

Go类型方法不等于实例方法

go - 我的目录 "expects"中的代码特定导入是什么意思?

go - 解码映射结构

Golang标志包遇到非标志时停止解析

go - 如何仅在 go-flag 包中显示当前设置?

go - 检查是否设置了所有标志(没有标志为空)

Go包命名

Gorm - 与匿名字段有一个关系

go - 标志返回到我的结构中的值

go - 在 GoLang 中定义独立的标志集