Golang Viper を使用したマップのスライスの読み取り
マップのスライスなど、ネストされたデータ構造を Golang で読み取るのは一般的なタスクです。この記事では、Viper ライブラリを使用してそのようなデータに簡単にアクセスして管理する方法を説明します。
問題: ネストされたマップのスライスを読み取る
構成ファイルを検討するターゲットのグループを表すマップのスライスを含む HCL 内。 Viper GetStringMap 関数は、「グループ」キーを単一のマップとして取得しますが、その中のマップのスライスにアクセスする必要があります。
解決策: Viper Unmarshalling を使用する
生データを手動でキャストして解析する代わりに、Viper のアンマーシャリング機能を利用できます。アンマーシャリングにより、構成は、目的のデータ構造をミラーリングするカスタム構造体に変換されます。
これを実現するには:
構成構造体を定義します:予想される構成データ構造に対応する Go 構造体。これには、間隔、statsd プレフィックス、およびグループ構造体のスライスのフィールドが含まれている必要があります。
type config struct { interval int `mapstructure:"Interval"` statsdPrefix string `mapstructure:"statsd_prefix"` groups []group } type group struct { group string `mapstructure:"group"` targetPrefix string `mapstructure:"target_prefix"` targets []target } type target struct { target string `mapstructure:"target"` hosts []string `mapstructure:"hosts"` }
構成をアンマーシャルします: Viper のアンマーシャル関数を使用して、構成をデコードします。設定ファイルを定義済みのファイルに追加しますstruct.
var C config err := viper.Unmarshal(&C) if err != nil { // Handle error }
これらの手順に従うことで、Viper を使用して Golang アプリケーションでネストされたマップのスライスを効果的に読み取り、管理できます。
以上がViper を使用して Golang でマップのネストされたスライスを効率的に読み取るにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。