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
このエントリーをはてなブックマークに追加