Maison >développement back-end >Golang >Comment lire des tranches de cartes à partir de fichiers de configuration à l'aide de 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" ] } }
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) } } } }
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!