我有一个当前格式的 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_*
- 1 回答
- 0 关注
- 71 浏览
添加回答
举报
0/150
提交
取消