gpt4 book ai didi

go - 隐藏标志默认值

转载 作者:数据小太阳 更新时间:2023-10-29 03:37:09 26 4
gpt4 key购买 nike

Go 提供简单的 CLI 开关,也就是标志。

var debug = flag.Bool("debug", false, "enable debugging")
var hostname = flag.String("hostname", "127.0.0.1", "hostname")
flag.Parse()

正如预期的那样产生

> ./program -h
Usage:
-debug
enable debugging
-hostname string
hostname (default "127.0.0.1")

我想隐藏特定标志的 (default "127.0.0.1") 部分。

在 SO 上搜索并建议使用 flag.FlagSet。

var shown flag.FlagSet
var hidden flag.FlagSet
var debug = shown.Bool("debug", false, "enable debugging")
var hostname = hidden.String("hostname", "127.0.0.1", "hostname")
flag.Usage = func() {
shown.PrintDefaults()
}
flag.Parse()
//shown.Parse(os.Args[0:]) // tried to solve "flag provided but not defined"

输出部分仅显示“调试”标志,但这会破坏实际标志的使用。

> ./program -debug
flag provided but not defined: -debug
Usage of ./program:
-debug
enable debugging

这也不理想,因为我想看到可用的标志,只是隐藏默认值。

期望的输出:

> ./program -h
Usage:
-debug
enable debugging
-hostname string
hostname

最佳答案

目前最好的解决方案是 Eugene建议的。谢谢!

var debug = flag.Bool("debug", false, "enable debugging")
var hostname = flag.String("hostname", "", "hostname")
flag.Parse()

defaultHostname := "127.0.0.1"

if *hostname == "" {
*hostname = defaultHostname
}

关于go - 隐藏标志默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46825216/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com