我有一个当前格式的dotenv文件
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"`
}
我正在寻找一种方法,无法找到一种可以手动(例如:向Viper询问所有前缀为DB_的键,然后自己设置(或自动(但Viper似乎没有办法以这种方式提取键/值(将作为DB_CUSTOMER1=val
的配置键映射到"CUSTOMER1": "val"
形式的映射的方法。
如果有任何建议,我将不胜感激。
谢谢!
spf13/viper主要使用mapstructure包在一种本机Go类型之间转换为另一种,即在取消封送处理时。您需要定义一个注释,该注释会导致此映射中出现任何未使用的值。可以选择收集此类提醒值。您需要修改地图以将界面作为
CustomerDB map[string]interface{} `mapstructure:",remain"`
它会将所有DB_*
字段值作为接口类型收集到映射中,您可以键入assert来获得所需的字符串值。