Maison > développement back-end > Golang > Comment lire des tranches de cartes à partir de fichiers de configuration à l'aide de Golang Viper ?

Comment lire des tranches de cartes à partir de fichiers de configuration à l'aide de Golang Viper ?

DDD
Libérer: 2024-11-26 04:46:22
original
778 Les gens l'ont consulté

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

Lecture de tranches de cartes avec Golang Viper

La bibliothèque Viper est un excellent outil pour lire et gérer les données de configuration dans Go. Un défi courant auquel les utilisateurs sont confrontés est de lire une tranche de cartes à partir d'un fichier de configuration.

Considérez le fichier de configuration HCL suivant :

interval = 10
statsd_prefix = "pinger"

group "dns" {
  target_prefix = "ping"
  target "dns" {
    hosts = [
      "dnsserver1",
      "dnsserver2"
    ]
  }
}
Copier après la connexion

Pour lire ce fichier de configuration avec Viper, vous pouvez utiliser le code suivant :

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)
            }
        }
    }
}
Copier après la connexion

En définissant les structures Go pour qu'elles correspondent au fichier de configuration, Viper peut automatiquement décoder et mapper les données de configuration aux types corrects. Cela simplifie le travail avec des structures de données complexes et fournit un moyen sécurisé d'accéder aux valeurs de configuration.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal