问题标签 [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 回答
4789 浏览

go - 使用 Viper 语言处理接口

我正在使用ViperCobra构建一个小应用程序。目前,我有一个这样的 yaml 文件:

我已经阅读了使用 Viper 的配置文件。

当我运行viper.Get("hosts")它时,它会返回一个接口(或一部分接口?)。这是我最终得到的数据结构:

我想在这里做的是遍历每个数组元素并使用名称、端口和键的值执行操作。

我对 Golang 中的接口完全陌生,所以这不是很清楚,关于这方面的文献非常混乱:(

任何帮助表示赞赏。

0 投票
1 回答
3662 浏览

go - 如何使用 viper 将环境变量解组为切片?

我有以下代码:

$MYPREFIX_LANGUAGES未设置时,C.Languages 的长度为 2(例如默认值)。当我设置$MYPREFIX_LANGUAGES为“英语西班牙语法语俄语”时,我得到的长度为 1。它只是将变量视为 1 个长字符串,而不是切片。如何获得切片 ( []string{"english", "spanish", "french", "russian"}?

0 投票
4 回答
6812 浏览

go - 为什么 Cobra 不读取我的配置文件?

Cobra 和 Viper 中的文档让我感到困惑。我做了cobra init fooproject,然后在我做的项目目录中cobra add bar。我有一个PersistentFlag命名的foo,这是命令中的 init 函数root

我的配置文件看起来像这样......

当我打电话时,go run main.go我看到了这个......

当我打电话时,go run main.go bar我看到这个...

所以它正在使用配置文件,但他们似乎都没有阅读它。也许我误解了 Cobra 和 Viper 的工作方式。有任何想法吗?

0 投票
1 回答
519 浏览

go - 替换毒蛇地图键而不替换整个地图

我在我的配置中使用 viper。如何在不更换整个地图的情况下更换钥匙?

在设置新的 Bob 时,我完全失去了 John。如果我将“SetDefault”更改为简单的“Set”,那么它似乎可以工作,但我想知道为什么“SetDefault”不起作用。

0 投票
1 回答
3154 浏览

go - 如何使用 viper 加载地图列表?

我想用 viper 加载以下配置:

我不知道如何加载地图列表。我想我只需要解组这个键,但是这段代码不起作用:

我错过了什么?

0 投票
1 回答
7336 浏览

go - 如何将数组中的配置项绑定到环境变量

下面是我的 toml 格式的配置文件。

...这是我加载它的代码:

例如,我首先检查环境变量HOST1_USERNAME1, HOST1_PASSWORD1,HOST2_USERNAME2和是否HOST2_PASSWORD2存在...如果存在,则将配置项设置为它们的值,否则我尝试从配置文件中获取值。

我知道 viper 提供AutomaticEnv了做类似事情的方法......但它是否适用于像我这样的集合(AutomaticEnv应在环境变量绑定后调用)?

鉴于我上面的代码,是否可以使用 viper 和 remove 提供的机制os.GetEnv

谢谢。

更新

下面是我更新的代码。在我定义了环境变量HOST1_USERNAME并将HOST1_PASSWORD配置文件中的相应设置设置为空字符串。

这是我的新配置文件:

这是我的代码:

我现在工作(感谢 Chrono Kitsune),希望对您有所帮助,j3d

0 投票
0 回答
312 浏览

go - 仅从结构返回特定字段

我有一对这样的结构:

然后是一个示例配置文件:

我正在使用viper读取配置文件,功能如下:

我现在想要做的是指定一个可选参数,datacenter如果指定了,则只返回来自该数据中心的密钥。如果未指定参数,我希望它解组并返回整个内容。

这可能吗?

编辑:我应该补充一点,到目前为止,我所做的只是对它们的范围:

所以可能有更好的方法。

0 投票
1 回答
11025 浏览

go - 使用 go-viper 的多个配置文件

是否可以使用 Viper 加载/合并多个配置文件?假设我有一个包含我的程序配置的通用配置文件,以及包含每个客户端配置的客户端特定配置文件,其中一个将根据程序的输入进行加载。

谢谢。

0 投票
2 回答
100 浏览

intellij-idea - 如何使用 viper 和来自 intellij 的 golang 检索价值

我想从 intellij 中检索变体 a ,但失败了。

在此处输入图像描述

0 投票
2 回答
2522 浏览

go - 使用 viper 解组 hcl 以构建结构

尝试将Unmarshal配置hcl文件转换为结构,使用viper,返回此错误:1 error(s) decoding:\n\n* 'NATS' expected a map, got 'slice'。什么不见​​了?

编码:

和配置文件(draft.hcl在当前目录内):

编辑

已经用包检查了这个结构,hcl它被正确地编组/解组。这也适用于yamland viper

这两个地方是有区别log.Info(viper.Get("NATS"))的。当hcl版本返回一个地图切片时,该yaml版本返回一个地图:map[password:__psw__4433__ httpport:10044 port:10041 username:cl1]