Heim > Backend-Entwicklung > Golang > Wie lese ich Kartenausschnitte aus Konfigurationsdateien mit Golang Viper?

Wie lese ich Kartenausschnitte aus Konfigurationsdateien mit Golang Viper?

DDD
Freigeben: 2024-11-26 04:46:22
Original
650 Leute haben es durchsucht

How to Read Slices of Maps from Configuration Files Using Golang Viper?

Kartenausschnitte mit Golang Viper lesen

Die Viper-Bibliothek ist ein hervorragendes Werkzeug zum Lesen und Verwalten von Konfigurationsdaten in Go. Eine häufige Herausforderung für Benutzer besteht darin, einen Teil der Karten aus einer Konfigurationsdatei zu lesen.

Betrachten Sie die folgende HCL-Konfigurationsdatei:

interval = 10
statsd_prefix = "pinger"

group "dns" {
  target_prefix = "ping"
  target "dns" {
    hosts = [
      "dnsserver1",
      "dnsserver2"
    ]
  }
}
Nach dem Login kopieren

Um diese Konfigurationsdatei mit Viper zu lesen, können Sie die verwenden Folgender Code:

type config struct {
    Interval      int     `mapstructure:"interval"`
    StatsdPrefix  string  `mapstructure:"statsd_prefix"`
    Groups       []group `mapstructure:"group"`
}

type group struct {
    Name         string  `mapstructure:"group"`
    TargetPrefix string  `mapstructure:"target_prefix"`
    Targets      []target `mapstructure:"target"`
}

type target struct {
    Name   string   `mapstructure:"target"`
    Hosts  []string `mapstructure:"hosts"`
}

func main() {
    viper.SetConfigName("config")
    viper.AddConfigPath(".")

    err := viper.ReadInConfig()
    if err != nil {
        panic(err)
    }

    var c config
    err = viper.Unmarshal(&c)
    if err != nil {
        panic(err)
    }

    fmt.Println(c.Interval)
    fmt.Println(c.StatsdPrefix)

    fmt.Println("Groups:")
    for _, group := range c.Groups {
        fmt.Println("- Name:", group.Name)
        fmt.Println("  - Prefix:", group.TargetPrefix)

        fmt.Println("  - Targets:")
        for _, target := range group.Targets {
            fmt.Println("    - Name:", target.Name)
            fmt.Println("      - Hosts:")
            for _, host := range target.Hosts {
                fmt.Println("        - ", host)
            }
        }
    }
}
Nach dem Login kopieren

Durch die Definition von Go-Strukturen entsprechend der Konfigurationsdatei kann Viper die Konfigurationsdaten automatisch dekodieren und den richtigen Typen zuordnen. Dies vereinfacht die Arbeit mit komplexen Datenstrukturen und bietet eine typsichere Möglichkeit, auf Konfigurationswerte zuzugreifen.

Das obige ist der detaillierte Inhalt vonWie lese ich Kartenausschnitte aus Konfigurationsdateien mit Golang Viper?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage