为了账号安全,请及时绑定邮箱和手机立即绑定

是否可以使用 Viper 将 env 值的前缀列表映射到映射中?

是否可以使用 Viper 将 env 值的前缀列表映射到映射中?

Go
繁星淼淼 2022-08-24 20:08:16
我有一个当前格式的 dotenv 文件KEY_PATH=/keysLOG_LEVEL=WARNINGDB_CUSTOMER1=dboneDB_CUSTOMER2=dbtwo我还有一个结构的形式type MyConfiguration struct {    KeyPath           string            `mapstructure:"KEY_PATH"`    CustomerDB map[string]string `<???>`    LogLevel          string            `mapstructure:"LOG_LEVEL"`}我正在寻找并且未能找到一种方法,我可以手动(例如:向Viper询问所有带有前缀DB_的键,然后自己设置它们)或自动(但似乎Viper没有办法以这种方式提取键/值)的形式映射到映射。DB_CUSTOMER1=val"CUSTOMER1": "val"我将不胜感激任何指点。谢谢!
查看完整描述

1 回答

?
手掌心

TA贡献1942条经验 获得超3个赞

spf13/viper主要使用mapstructure包在一个原生Go类型到另一个原生Go类型之间进行转换,即在取消封送处理时。您需要定义一个注记,该注记将导致任何未使用的值进入此映射。有一个选项可以收集此类提醒值。您需要修改映射以将接口作为

CustomerDB  map[string]interface{} `mapstructure:",remain"`

这会将所有字段值作为接口类型收集到映射中,您可以键入 assert 以获取所需的字符串值。DB_*


查看完整回答
反对 回复 2022-08-24
  • 1 回答
  • 0 关注
  • 71 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号