使用 "flag" 包时去掉 "flag provided but not defined"
Get rid of "flag provided but not defined" when using "flag" package
我正在使用 go 制作一个 API 请求工具,并且想使用“flag”包。
我已经使用 flag.String
定义了一个标志,但是当我输入一个不存在的标志时
该程序打印“提供但未定义的标志:{flag}”(其中 {flag} 是不存在的标志。)
我的代码是:
package main
import "fmt"
import "flag"
import "os"
func main() {
// Set up command-line arguments
apiRequestTool := flag.String("api", "", "")
flag.Usage = func() {
fmt.Fprintf(os.Stderr, "Usage: TestTestTest\n")
os.Exit(1)
}
flag.Parse()
// Check API URL value
if *apiRequestTool == "" {
fmt.Println("\"api\" Usage: --api [string]")
os.Exit(1)
}
}
flag.String
和 flag.Parse
等函数在名为 flag.CommandLine
的导出 *flag.FlagSet
单例上运行。抑制来自该标志集的所有错误消息的一种方法包括将其输出转移到一个黑洞(例如,在您的 main 函数的顶部),如下所示:
flag.CommandLine.SetOutput(io.Discard)
之后,您认为烦人的错误消息将不会被打印出来:
$ go run main.go --whatever
Usage: TestTestTest
exit status 1
我正在使用 go 制作一个 API 请求工具,并且想使用“flag”包。
我已经使用 flag.String
定义了一个标志,但是当我输入一个不存在的标志时
该程序打印“提供但未定义的标志:{flag}”(其中 {flag} 是不存在的标志。)
我的代码是:
package main
import "fmt"
import "flag"
import "os"
func main() {
// Set up command-line arguments
apiRequestTool := flag.String("api", "", "")
flag.Usage = func() {
fmt.Fprintf(os.Stderr, "Usage: TestTestTest\n")
os.Exit(1)
}
flag.Parse()
// Check API URL value
if *apiRequestTool == "" {
fmt.Println("\"api\" Usage: --api [string]")
os.Exit(1)
}
}
flag.String
和 flag.Parse
等函数在名为 flag.CommandLine
的导出 *flag.FlagSet
单例上运行。抑制来自该标志集的所有错误消息的一种方法包括将其输出转移到一个黑洞(例如,在您的 main 函数的顶部),如下所示:
flag.CommandLine.SetOutput(io.Discard)
之后,您认为烦人的错误消息将不会被打印出来:
$ go run main.go --whatever
Usage: TestTestTest
exit status 1