У меня есть следующий файл 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
, но что мне делать, если я не знаю названия поля (или, другими словами, если оно динамическое)?