问题标签 [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.

0 投票
1 回答
1639 浏览

go - 如何仅提取在 cli 中明确设置的标志集?

我是眼镜蛇毒蛇的新手。

我想知道是否有办法从 cli 中排除用户未设置的标志值。所以我的问题是,我的眼镜蛇cmd中有一些具有默认值的可选标志。我想知道如果用户没有设置这些可选标志,是否有办法排除它们被处理?或者从另一个角度来看,有没有办法从标志集中提取用户从 cli 显式更改的标志cmd

这是一个更好地说明我的案例的示例:

因此,假设对于年龄和地址,我希望它们是可选的,并且在传递给 struct 时不传播。所以这意味着,在 cli 中,用户不需要提交ageandaddress标志,这些可选标志的默认值为 nil。但是,Int 和 String 标志是强类型的,因此它们需要默认值(例如:""-1)。结果,当我将命令 pflags 绑定到 viper 并且用户不在 cli 中输入年龄和地址值时,viper 将接收""地址和-1年龄。使用上述方法,默认值将传播到 User 结构。

我想要的是排除用户未设置的标志值。有没有办法让我从接收用户未明确设置的标志值中排除用户结构?

我目前排除未设置标志在 User 结构中处理的解决方案目前是这样的:

  1. 有一个命令标志数组。初始化一个空map[string]interface{}
  2. 遍历数组,并检查标志是否通过flags.Changed("flag"). 如果标志被更改,则将其添加到地图
  3. 将地图转换为 json
  4. 将 json 对象解组为结构

    /li>

但我想知道是否有比我上面的解决方案更好的选择。最好,我不想更改User结构中的任何内容,因为它是从外部包导入的。

谢谢你。非常感谢您的帮助。

0 投票
1 回答
572 浏览

go - 如何解组 Golang Viper snake_case 值

如何使用 Golang 和 Viper 库将 viper.unmarshal(&c) 和一个 snake_case 字段:

目前我得到“”空值。

0 投票
1 回答
57 浏览

go - 为什么“switch t := policy.Parameter.(type)”不适用于 viper.Unmarshal()

我想从 JSON 中解组几种类型并使用接口来表示它不同的实际结构。但是当我发送结构时,interface{}它会将其转换为地图。动物.json 是:

0 投票
1 回答
346 浏览

go - 如何从 make 命令 cobra 中获取 2 个标志

如何创建一个包含 2 个参数的 makefile?myapp 用 go 编写,使用 cobra cli。有一个接受 2 个参数(标志)的命令。

这行得通

在我的制作文件中,我有

所以在 CLI 中,当我尝试

不读入标志值我如何读入 2 个标志值,它似乎只读入 1 个标志值。

0 投票
1 回答
2614 浏览

go - Viper 在我的解组结构中没有考虑 yaml 标签

当我使用Unmarshalviper 的方法用我的 yaml 文件中的值填充我的配置结构时,一些结构字段变成了空的!我这样做:

我的结构是这样的:

这里urllocation字段在yaml文件中填充了正确的值,但其他字段为空!

奇怪的是,当我尝试打印如下字段时:

它在 yaml 文件中打印正确的值并且不为空

0 投票
0 回答
977 浏览

go - 配置文件和 Golang 或只是初学者的错误

我已经在 Go 中完成了一些教程,并想尝试一些更相关的东西,我很快就会需要这些东西。我从看毒蛇和眼镜蛇开始。我知道配置文件实际上是供 viper 使用的,而 cobra 只是用它来处理事情。然而,我坚持甚至超过了这一点。我可能会遇到更多错误,但我被困在这个错误上,我找到的任何帮助对帮助我的问题没有任何意义。所以我在 C/C++ 方面有不错的背景。从阅读中,和号和星号以类似的方式使用。这就是为什么我有这个问题。

这基本上是这里用于毒蛇和眼镜蛇的示例。 去眼镜蛇

问题是我收到这些错误。

我第一次打电话给这些,所以我不确定它们会有什么价值。如果这是一个非常简单的问题,我深表歉意。但是其中一些 Go 页面有点难以理解。

0 投票
1 回答
3560 浏览

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 生成的内容缺乏了解。

0 投票
1 回答
1178 浏览

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?

0 投票
1 回答
382 浏览

go - Golang毒蛇,MergeConfigMap后我无法获取字段

我正在开发 Go 项目,我需要设置一些配置,为此我正在使用 Viper。当我将地图与 viper 对象合并后,我无法获得单独的配置字段,但是当我这样做时,viper.AllSettings()我确实获得了所有设置,例如:

输出:

0 投票
0 回答
76 浏览

go - 有没有办法使用字符串插值技术来设置包含列表的特定 viper 键?

我正在尝试使用 viper 设置特定属性。我知道允许通过使用“点”表示法来引用嵌套属性来设置 viper 配置属性的便捷语法。

但是,当我尝试对包含嵌套属性列表的属性(如上)执行相同操作时,它不起作用。它将[0]or[%d]视为字符串(这是有道理的),并最终创建"list[0]"为键下的else键。

如何使用此约定设置数组的特定元素?