0
2つのマップを含む構造体にYAMLファイルをアンマーシャリングしようとしています(go-yamlを使用)。マップで構造体にYAMLをアンマーシャリングする
YAMLファイル:
'Include':
- 'string1'
- 'string2'
'Exclude':
- 'string3'
- 'string4'
構造体:
type Paths struct {
Include map[string]struct{}
Exclude map[string]struct{}
}
アンマーシャルしよう関数の簡略化されたバージョン(すなわち除去エラー等の取り扱い):
import "gopkg.in/yaml.v2"
func getYamlPaths(filename string) (Paths, error) {
loadedPaths := Paths{
Include: make(map[string]struct{}),
Exclude: make(map[string]struct{}),
}
filenameabs, _ := filepath.Abs(filename)
yamlFile, err := ioutil.ReadFile(filenameabs)
err = yaml.Unmarshal(yamlFile, &loadedPaths)
return loadedPaths, nil
}
データはファイルから読み込まれていますが、unmarshal-functionは構造体に何も入れておらず、戻り値ですエラーなし。
私は、unmarshal-functionがYAMLコレクションをmap[string]struct{}
にすることはできないと思っていますが、前述のようにエラーは発生せず、同様の問題を調べて見つけられないようです。
手がかりや洞察力があれば幸いです!
返信ありがとうございます!私はあなたがここで示唆したようにスライスを使用しようとしましたが、私はそれが構造体のタグの不足のために動作しなかったと仮定します。私が何か良いものを思いつくまで、私はロードされた後にそれらをマップに変えるだろうと思う! – henrheid