gpt4 book ai didi

go - 有没有办法确定使用 `flag.VisitAll` 时是否设置了标志?

转载 作者:IT王子 更新时间:2023-10-29 01:08:21 24 4
gpt4 key购买 nike

我正在使用 go 的原生 “flag” 包。

它内置了访问所有当前定义的标志的能力,使用 flag.VisitAll .

我正在尝试构建一个片段,尝试从环境变量中获取该标志的值(如果存在的话),以防万一该标志未设置,但我找不到一种方法来确定特定的标志是否存在是否设置了标志。

有没有办法在不实现新参数类型的情况下实现这一点?

最佳答案

使用 flag.VisitAll 听起来有点费解;我建议获取具有合理默认值的环境变量并将其用作标志的默认值 - 这意味着如果未设置标志,环境变量将作为后备:

package main

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

func GetEnvDefault(key, def string) string {
v := os.Getenv(key)

if v == "" {
return def
}

return v
}

func main() {
// Uncomment to test behaviour
// os.Setenv("SERVER_NAME", "donaldduck")

var serverName string

flag.StringVar(&serverName, "n", GetEnvDefault("SERVER_NAME", "mickeymouse"), "The human name for the server")
flag.Parse()

fmt.Println(serverName)
}

参见:https://play.golang.org/p/ixDsXH31cBF

关于go - 有没有办法确定使用 `flag.VisitAll` 时是否设置了标志?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52914127/

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