我有以下 yml 文件:
# config.yml
items:
name-of-item: # dynamic field
source: ...
destination: ...
我想用 viper 来解析它,但name-of-item
可以是任何东西,所以我不知道如何解决这个问题。我知道我可以使用以下内容:
// inside config folder
package config
type Items struct {
NameOfItem NameOfItem
}
type NameOfItem struct {
Source string
Destination string
}
// inside main.go
package main
import (
"github.com/spf13/viper"
"log"
"github.com/username/lib/config"
)
func main() {
viper.SetConfigName("config.yml")
viper.AddConfigPath(".")
var configuration config.Item
if err := viper.ReadInConfig(); err != nil {
log.Fatalf("Error reading config file, %s", err)
}
err := viper.Unmarshal(&configuration)
if err != nil {
log.Fatalf("unable to decode into struct, %v", err)
}
}
在这种情况下,我可以解组,因为我在声明NameOfItem
,但是如果我不知道字段的名称(或者换句话说,如果它是动态的)我该怎么办?