Conseils pour lire une tranche de cartes avec Golang Viper
Dans cet article, nous fournirons des informations sur la lecture d'une tranche de cartes à l'aide de la bibliothèque Viper populaire dans Go.
Comme mentionné, vous utilisez Viper pour gérer les fichiers de configuration et vous disposez d'une configuration YAML similaire à celui partagé. Votre objectif est de lire l'option « groupe », qui peut contenir plusieurs groupes avec leurs paramètres respectifs.
Comprendre le piège
Lors de la lecture de l'option « groupe » en utilisant viper.GetStringMap(), vous avez rencontré un problème. En effet, l'option « groupe » est une tranche de cartes, pas une seule carte. Viper ne peut pas automatiquement déduire cela et renvoie une erreur.
La solution : Unmarshaling personnalisé
Pour lire une tranche de cartes, nous vous recommandons de créer une structure de configuration personnalisée pour représenter votre structure de données souhaitée. Dans votre cas, vous pouvez définir des structures pour la configuration, le groupe et la cible, comme indiqué dans la solution fournie.
Une fois que vous avez défini ces structures, vous pouvez utiliser viper.Unmarshal() pour désorganiser la configuration dans votre structure personnalisée. Cela gérera automatiquement la tranche de cartes et remplira votre structure en conséquence.
Exemple de code :
type config struct { interval int `mapstructure:"interval"` statsdPrefix string `mapstructure:"statsd_prefix"` groups []group `mapstructure:"group"` } type group struct { group string `mapstructure:"group"` targetPrefix string `mapstructure:"target_prefix"` targets []target `mapstructure:"target"` } type target struct { target string `mapstructure:"target"` hosts []string `mapstructure:"hosts"` } var C config err := viper.Unmarshal(&C) if err != nil { panic(fmt.Errorf("unable to decode into struct, %v", err)) }
En suivant cette approche, vous pouvez facilement lire votre tranche de cartes. cartes utilisant Viper.
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!