ホームページ > バックエンド開発 > Golang > Viper を使用して Golang でマップのネストされたスライスを効率的に読み取るにはどうすればよいですか?

Viper を使用して Golang でマップのネストされたスライスを効率的に読み取るにはどうすればよいですか?

DDD
リリース: 2024-11-24 00:48:09
オリジナル
695 人が閲覧しました

How Can I Efficiently Read Nested Slices of Maps in Golang Using Viper?

Golang Viper を使用したマップのスライスの読み取り

マップのスライスなど、ネストされたデータ構造を Golang で読み取るのは一般的なタスクです。この記事では、Viper ライブラリを使用してそのようなデータに簡単にアクセスして管理する方法を説明します。

問題: ネストされたマップのスライスを読み取る

構成ファイルを検討するターゲットのグループを表すマップのスライスを含む HCL 内。 Viper GetStringMap 関数は、「グループ」キーを単一のマップとして取得しますが、その中のマップのスライスにアクセスする必要があります。

解決策: Viper Unmarshalling を使用する

生データを手動でキャストして解析する代わりに、Viper のアンマーシャリング機能を利用できます。アンマーシャリングにより、構成は、目的のデータ構造をミラーリングするカスタム構造体に変換されます。

これを実現するには:

  1. 構成構造体を定義します:予想される構成データ構造に対応する 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"`
    }
    ログイン後にコピー
  2. 構成をアンマーシャルします: Viper のアンマーシャル関数を使用して、構成をデコードします。設定ファイルを定義済みのファイルに追加しますstruct.

    var C config
    
    err := viper.Unmarshal(&C)
    if err != nil {
        // Handle error
    }
    ログイン後にコピー

これらの手順に従うことで、Viper を使用して Golang アプリケーションでネストされたマップのスライスを効果的に読み取り、管理できます。

以上がViper を使用して Golang でマップのネストされたスライスを効率的に読み取るにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート