如何解决是否可以使用 Viper 将带前缀的 env 值列表映射到映射中?
KEY_PATH=/keys
LOG_LEVEL=WARNING
DB_CUSTOMER1=dbone
DB_CUSTOMER2=dbtwo
我也有一个
形式的结构体type MyConfiguration struct {
KeyPath string `mapstructure:"KEY_PATH"`
CustomerDB map[string]string `<???>`
LogLevel string `mapstructure:"LOG_LEVEL"`
}
我正在寻找但未能找到一种方法,我可以手动将作为 DB_CUSTOMER1=val
的配置键映射到 "CUSTOMER1": "val"
形式的映射(例如:向 Viper 询问所有带有前缀的键DB_ 然后自己设置)或自动设置(但似乎 Viper 没有办法以这种方式提取键/值)。
希望得到任何指点。
谢谢!
解决方法
spf13/viper 主要使用 mapstructure 包在一种本机 Go 类型之间转换为另一种,即在解组时。您需要定义一个注释,该注释会导致此地图出现任何未使用的值。可以选择收集此类 reminder values。您需要修改地图以将界面作为
CustomerDB map[string]interface{} `mapstructure:",remain"`
这会将您所有的 DB_*
字段值作为接口类型收集到地图中,您可以键入 assert 以获取所需的字符串值。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。