使用 "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.Stringflag.Parse 等函数在名为 flag.CommandLine 的导出 *flag.FlagSet 单例上运行。抑制来自该标志集的所有错误消息的一种方法包括将其输出转移到一个黑洞(例如,在您的 main 函数的顶部),如下所示:

flag.CommandLine.SetOutput(io.Discard)

之后,您认为烦人的错误消息将不会被打印出来:

$ go run main.go --whatever
Usage: TestTestTest
exit status 1