go - 如何在 Go CLI 程序中输入不带参数的可选标志

标签 go

我已经阅读了以下两个用于创建标志的库的文档。 :

  1. https://golang.org/pkg/flag/
  2. https://github.com/codegangsta/cli

而且还没有找到一种方法来做可选的标志。如何做到这一点?

根据 https://gobyexample.com/command-line-flags 中的代码:

package main
import "flag"
import "fmt"

func main() {
  boolPtr := flag.Bool("fork", false, "a bool")
  fmt.Println("fork:", *boolPtr)
}

并执行: $ ./command-line-flags -fork

结果应该是 true,这是我想要的行为,但我在我的机器上得到的是 false。

任何指导将不胜感激, 谢谢

最佳答案

你必须parse the flags在定义所有标志之后和访问标志之前:

func main() {
  boolPtr := flag.Bool("fork", false, "a bool")
  flag.Parse()  // add this line
  fmt.Println("fork:", *boolPtr)
}

通过此更改,fork 标志将按预期工作。

关于go - 如何在 Go CLI 程序中输入不带参数的可选标志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34388593/

相关文章:

go - Kubernetes 运算符(operator)使用 yaml 模板创建 Deployment

mongodb - Mongo Go 驱动程序 Count() 方法从 Azure CosmosDB MongoDB Api Count() 获取 "Invalid response from server, value field is not a number"

ssl - 在 autocert.Manager 中省略 HostPolicy 是否有任何危险?

go - runtime.LockOSThread 是否允许子 goroutine 在同一个操作系统线程中运行?

regex - Golang regExp 用于匹配字符直到一个字符串(不包括子字符串)

go - 将类型 *string 转换为类型 bson.ObjectId

go - 如何在公共(public)仓库中使用 go doc

mysql - 如何从MySQL判断错误类型

xml - 具有命名空间的 Golang XML Marshal

json - 无法将对象解码为 []uint8 类型的 Go 值