Golangバイパーとマップのスライス読む:https://github.com/spf13/viper私はここから優秀な毒蛇のライブラリを使用してい
私はそれがJSONやYAMLファイルとしてすることができるが(HCl中の設定ファイルを読み込むしようとしているがウェル)、このようになりますどの:私が持っているコードは、これまでのようになります
interval = 10
statsd_prefix = "pinger"
group "dns" {
target_prefix = "ping"
target "dns" {
hosts = [
"dnsserver1",
"dnsserver2"
]
}
}
:
viper.SetConfigName("config")
viper.AddConfigPath(".")
err := viper.ReadInConfig()
if err != nil {
panic(fmt.Errorf("Fatal error config file: %s \n", err))
}
interval := viper.GetInt("interval")
prefix := viper.GetString("statsd_prefix")
groups := viper.GetStringMap("group")
fmt.Println(interval)
fmt.Println(prefix)
私がいる大きな問題は、グループオプションです。これは、複数の異なるグループにすることができます。
viper.GetStringMap
を使用して読むと動作しないようですので、標準viper.Get
機能を使用しました。結果の構造はダンプすると次のようになります。
([]map[string]interface {}) (len=1 cap=1) {
(map[string]interface {}) (len=1) {
(string) (len=3) "dns": ([]map[string]interface {}) (len=1 cap=2) {
(map[string]interface {}) (len=2) {
(string) (len=13) "target_prefix": (string) (len=4) "ping",
(string) (len=6) "target": ([]map[string]interface {}) (len=1 cap=1) {
(map[string]interface {}) (len=1) {
(string) (len=8) "dns": ([]map[string]interface {}) (len=1 cap=1) {
(map[string]interface {}) (len=1) {
(string) (len=5) "hosts": ([]interface {}) (len=2 cap=2) {
(string) (len=18) "dnsserver1",
(string) (len=18) "dnsserver2"
}
}
}
}
}
}
}
}
}
反射を使用するとスライスタイプのようです。それをスライスにキャストする必要がありますか?それ、どうやったら出来るの?このようなデータ構造を簡単に管理する方法はありますか?
私はgolangに対して完全に新たなんだ、だからではなく、コールの生のGetの
アンマーシャルされたら、値はどのように使用可能になりますか? – jaxxstorm
私はこのエラーのために 'undefined:grope'というエラーを受け取っています – jaxxstorm
値はinterv:= C.intervalまたはgrp:= rangeのためのループで利用可能ですC.groups {for trg:= range grp {...}}エラーは、誤植の原因である可能性が高いです。 – Uvelichitel