接受Go语言中flag.String的空命令行参数值

问题描述 投票:0回答:1

我正在创建一个 CLI 工具,并且我想接受“-l”标志的字符串值。如果“-l”标志在没有参数的情况下传递,则使用空字符串值。 当我用空参数运行它时:

app.exe -l

我遇到错误:

flag needs an argument: -l

代码块:

flag.StringVar(&listening, "l", "", "Receive only")

我该如何解决这个错误? bool 类型适用于空参数,但这种情况也接受类似字符串:

app.exe -l "127.0.0.1"

我正在使用“flag”Go 包。

go flag-go
1个回答
0
投票

在这种情况下,您需要使用布尔标志而不是字符串,因为您的意图似乎是标记命令是否应该“仅接收”。

flag.BoolVar(&listening, "l", false, "Set to true to listen only")
flag.Parse()

然后您可以使用以下任一样式调用命令行应用程序:

app.exe -l "127.0.0.1"

app.exe -l=true "127.0.0.1"
© www.soinside.com 2019 - 2024. All rights reserved.