Golang Viper を使用したマップのスライスの読み取り
Viper ライブラリは、Go で構成データを読み取り、管理するための優れたツールです。ユーザーが直面する一般的な課題の 1 つは、構成ファイルからマップのスライスを読み取ることです。
次の HCL 構成ファイルについて考えてみましょう。
interval = 10 statsd_prefix = "pinger" group "dns" { target_prefix = "ping" target "dns" { hosts = [ "dnsserver1", "dnsserver2" ] } }
Viper でこの構成ファイルを読み取るには、次のコード:
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) } } } }
構成ファイルに一致するように Go 構造を定義することで、Viper は構成データを自動的にデコードし、正しい構成データにマッピングできます。 種類。これにより、複雑なデータ構造の操作が簡素化され、構成値にアクセスするタイプセーフな方法が提供されます。
以上がGolang Viper を使用して設定ファイルからマップのスライスを読み取る方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。