问题标签 [viper-go]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
go - 如何仅提取在 cli 中明确设置的标志集?
我想知道是否有办法从 cli 中排除用户未设置的标志值。所以我的问题是,我的眼镜蛇cmd
中有一些具有默认值的可选标志。我想知道如果用户没有设置这些可选标志,是否有办法排除它们被处理?或者从另一个角度来看,有没有办法从标志集中提取用户从 cli 显式更改的标志cmd
?
这是一个更好地说明我的案例的示例:
因此,假设对于年龄和地址,我希望它们是可选的,并且在传递给 struct 时不传播。所以这意味着,在 cli 中,用户不需要提交age
andaddress
标志,这些可选标志的默认值为 nil。但是,Int 和 String 标志是强类型的,因此它们需要默认值(例如:""
和-1
)。结果,当我将命令 pflags 绑定到 viper 并且用户不在 cli 中输入年龄和地址值时,viper 将接收""
地址和-1
年龄。使用上述方法,默认值将传播到 User 结构。
我想要的是排除用户未设置的标志值。有没有办法让我从接收用户未明确设置的标志值中排除用户结构?
我目前排除未设置标志在 User 结构中处理的解决方案目前是这样的:
- 有一个命令标志数组。初始化一个空
map[string]interface{}
- 遍历数组,并检查标志是否通过
flags.Changed("flag")
. 如果标志被更改,则将其添加到地图 - 将地图转换为 json
将 json 对象解组为结构
/li>
但我想知道是否有比我上面的解决方案更好的选择。最好,我不想更改User
结构中的任何内容,因为它是从外部包导入的。
谢谢你。非常感谢您的帮助。
go - 如何解组 Golang Viper snake_case 值
如何使用 Golang 和 Viper 库将 viper.unmarshal(&c) 和一个 snake_case 字段:
目前我得到“”空值。
go - 为什么“switch t := policy.Parameter.(type)”不适用于 viper.Unmarshal()
我想从 JSON 中解组几种类型并使用接口来表示它不同的实际结构。但是当我发送结构时,interface{}
它会将其转换为地图。动物.json 是:
go - 如何从 make 命令 cobra 中获取 2 个标志
如何创建一个包含 2 个参数的 makefile?myapp 用 go 编写,使用 cobra cli。有一个接受 2 个参数(标志)的命令。
这行得通
在我的制作文件中,我有
所以在 CLI 中,当我尝试
不读入标志值我如何读入 2 个标志值,它似乎只读入 1 个标志值。
go - Viper 在我的解组结构中没有考虑 yaml 标签
当我使用Unmarshal
viper 的方法用我的 yaml 文件中的值填充我的配置结构时,一些结构字段变成了空的!我这样做:
我的结构是这样的:
这里url
和location
字段在yaml文件中填充了正确的值,但其他字段为空!
奇怪的是,当我尝试打印如下字段时:
它在 yaml 文件中打印正确的值并且不为空!
go - 配置文件和 Golang 或只是初学者的错误
我已经在 Go 中完成了一些教程,并想尝试一些更相关的东西,我很快就会需要这些东西。我从看毒蛇和眼镜蛇开始。我知道配置文件实际上是供 viper 使用的,而 cobra 只是用它来处理事情。然而,我坚持甚至超过了这一点。我可能会遇到更多错误,但我被困在这个错误上,我找到的任何帮助对帮助我的问题没有任何意义。所以我在 C/C++ 方面有不错的背景。从阅读中,和号和星号以类似的方式使用。这就是为什么我有这个问题。
这基本上是这里用于毒蛇和眼镜蛇的示例。 去眼镜蛇
问题是我收到这些错误。
我第一次打电话给这些,所以我不确定它们会有什么价值。如果这是一个非常简单的问题,我深表歉意。但是其中一些 Go 页面有点难以理解。
go - 如何使用 Viper 访问“StringToStringVar”类型的 Cobra Flag?
我正在尝试在 Go 中开发一个应用程序,它接受命令行上的输入作为键值对字符串。为此,我StrngToStringVar
从 Cobra 库中使用。
我还使用 Viper 将这些标志绑定到配置,但是无论我输入什么值,我似乎都无法从 Viper 获得它。
这是代码
如果我使用命令运行它,go run .\main.go --item shopping=apple,banana --name foobar
我会得到以下结果
可以看出,即使我正确设置了输入(我相信),他的输出也不包含任何项目。我一直在尝试使用 PR https://github.com/spf13/pflag/pull/133来解决如何做到这一点,但我没有任何运气。
我想知道绑定是否不正确,但我已经在其他项目中成功使用了 CObra,所以我对如何引用map[string]string
从 Cobra 生成的内容缺乏了解。
go - Validating configurations files with viper
I was looking for a configuration parser for go and https://github.com/spf13/viper seems to come highly recommended.
I am very surprised to find that configuration files are not validated by default. Viper parses files and extracts requested values from them but I cannot find a way to detect bad configuration.
For instance I if create a (Java style) .properties file containing just "???" and nothing else. This is accepted without any error.
I can understand the philosophy that you should ignore irrelevant configuration items but I desire more rigor. I would also like to reject anything that does not match the X=Y format in a properties file.
To me this is a fatal flaw that suggests I should use a different package (or roll my own as usual).
Have I missed something? Does viper in fact support detecting and rejecting bad configuration keys?
go - Golang毒蛇,MergeConfigMap后我无法获取字段
我正在开发 Go 项目,我需要设置一些配置,为此我正在使用 Viper。当我将地图与 viper 对象合并后,我无法获得单独的配置字段,但是当我这样做时,viper.AllSettings()
我确实获得了所有设置,例如:
输出:
go - 有没有办法使用字符串插值技术来设置包含列表的特定 viper 键?
我正在尝试使用 viper 设置特定属性。我知道允许通过使用“点”表示法来引用嵌套属性来设置 viper 配置属性的便捷语法。
但是,当我尝试对包含嵌套属性列表的属性(如上)执行相同操作时,它不起作用。它将[0]
or[%d]
视为字符串(这是有道理的),并最终创建"list[0]"
为键下的else
键。
如何使用此约定设置数组的特定元素?