golangでYAMLファイルを読み込む
https://github.com/go-yaml/yamlを使う事で、 goでYAMLを扱うことが出来ます。
サイトにはメモリ上のデータに対してYAML化するサンプルしかありませんが、
以下のようにすることでファイルからYAMLを読み込み、Mapとして扱うことが出来ます。
またExampleには型を決めて読み込む方法しか乗っていませんが、
以下の例では、go で yaml 等を「map[interface{}]interface{}」型で読み込んだ際の動的型の参照方法
を参考に型を決めずにMapで読み込んでいます。
かなり冗長な表現になっていますが…(´・_・`)
a: Easy!
b:
c: 2
d: [3, 4]
package main
import (
"fmt"
"io/ioutil"
"gopkg.in/yaml.v2"
)
func main() {
buf, err := ioutil.ReadFile("test.yml")
if err != nil {
return
}
m := make(map[interface{}]interface{})
err = yaml.Unmarshal(buf, &m)
if err != nil {
panic(err)
}
fmt.Printf("%s\n", m["a"])
fmt.Printf("%d\n", m["b"].(map[interface {}]interface {})["c"])
}
出力結果
Easy!
2