隐藏golang消息

隐藏golang消息,go,flags,messages,Go,Flags,Messages,是否可以隐藏golang消息?我举一个例子: package main import ( "flag" "fmt" "os" ) var signal = flag.String("z", "", "") func main() { flag.Usage = func() { fmt.Printf("Usage: kata -z <command>\n\n") fmt.Printf(" test\tTest

是否可以隐藏golang消息?我举一个例子:

package main

import (
    "flag"
    "fmt"
    "os"
)

var signal = flag.String("z", "", "")

func main() {

    flag.Usage = func() {
        fmt.Printf("Usage: kata -z <command>\n\n")
        fmt.Printf("    test\tTesting\n")
        fmt.Printf("    version\tVersion\n")
        fmt.Println("")
    }

    flag.Parse()
    if len(os.Args) != 3 {
        flag.Usage()
        os.Exit(1)
    }

    switch *signal {
    case "test":
        fmt.Println("testing...")
    case "version":
        fmt.Println("0.0.1")
    default:
        fmt.Println("incorrect...")
    }
}
主程序包
进口(
“旗帜”
“fmt”
“操作系统”
)
var signal=flag.String(“z”、“”、“”)
func main(){
flag.Usage=func(){
fmt.Printf(“用法:kata-z\n\n”)
fmt.Printf(“测试\t测试\n”)
fmt.Printf(“版本\t版本\n”)
格式打印项次(“”)
}
flag.Parse()
如果len(os.Args)!=3{
flag.Usage()
操作系统退出(1)
}
开关*信号{
案例“测试”:
fmt.Println(“测试…”)
案例“版本”:
fmt.Println(“0.0.1”)
违约:
fmt.Println(“不正确…”)
}
}
此应用程序向用户显示下一个信息:

但是如果我在命令行
kata-flag
中写入,系统将返回:
flag需要一个参数:
提供但未定义的标志:
以及我之前向您显示的信息

我想知道是否有可能隐藏golang的信息


附言:如果你不明白我的问题,我可以重新措辞。

我找到了一个解决方案:

之前:

flag.Parse()
if len(os.Args) != 3 {
    flag.Usage()
    os.Exit(1)
}
现在:


我找到了一个解决方案:

之前:

flag.Parse()
if len(os.Args) != 3 {
    flag.Usage()
    os.Exit(1)
}
现在:


使用
flag
中的全局函数实际上会传递到名为
flag.CommandLine
的全局
flag.FlagSet
。在内部,这会将错误打印到输出,默认情况下输出为stderr。您可以通过将其显式设置为,例如,
ioutil.Discard
,来抑制消息:

flag.CommandLine.SetOutput(ioutil.Discard)
flag.Parse()

这将丢弃
flag.Parse()
内部输出的所有消息。您还可以通过传入适当的
io将其记录到您选择的任何其他位置。Writer

使用
flag
中的全局函数实际上会传递到名为
flag.CommandLine
的全局
flag.FlagSet
。在内部,这会将错误打印到输出,默认情况下输出为stderr。您可以通过将其显式设置为,例如,
ioutil.Discard
,来抑制消息:

flag.CommandLine.SetOutput(ioutil.Discard)
flag.Parse()

这将丢弃
flag.Parse()
内部输出的所有消息。您还可以通过传入适当的
io.Writer

将其记录到您选择的任何其他位置,您到底想隐藏什么?flag包正按照您的要求执行。我认为这是指在
flag.Parse()过程中输出的错误消息
。我想隐藏golang返回给我的消息:
标志需要一个参数:
标志已提供但未定义:
并仅显示标志。使用功能感谢@Adrian!我要写一个解决方案。你到底想隐藏什么?flag包正按照您的要求执行。我认为这是指在
flag.Parse()过程中输出的错误消息
。我想隐藏golang返回给我的消息:
标志需要一个参数:
标志已提供但未定义:
并仅显示标志。使用功能感谢@Adrian!我将编写一个解决方案。这将修复您的特定错误情况,但在某些情况下,它仍可能输出自己的消息。请参阅我的答案以获得全面的解决方案。这将修复特定的错误情况,但在某些情况下,它仍可能输出自己的消息。请参阅我的答案以获得全面的解决方案。关于阻止flag包的输出,我面临同样的问题。当我尝试您的解决方案时,我得到以下错误:
undefined:ioutil
。听起来您没有为
ioutil
添加导入:关于阻止从标志包输出,我面临相同的问题。当我尝试您的解决方案时,出现以下错误:
undefined:ioutil
。听起来您没有为
ioutil
添加导入: