[Go] YAML ファイルを読み込む

作成日: 2018年03月07日

パッケージ gopkg.in/yaml.v2yaml.Unmarshal 関数を使用すると、任意の構造体に割り当てることができます。

package main

import (
    "fmt"
    "io/ioutil"

    "gopkg.in/yaml.v2"
)

type YamlContent struct {
    Users []User `yaml:"users"`
}

type User struct {
    Name string `yaml:"name"`
    Age  int    `yaml:"age"`
}

func main() {
    f, err := ioutil.ReadFile("./sample.yml")
    if err != nil {
        panic(err.Error())
    }

    yamlContent := &YamlContent{}
    err = yaml.Unmarshal(f, &yamlContent)
    if err != nil {
        panic(err.Error())
    }

    fmt.Printf("%#v", yamlContent)
}

sample.yaml の中身は下記です。

users:
  - name: Tom
    age: 15
  - name: Bob
    age: 30

実行結果は下記となります。

&main.YamlContent{Users:[]main.User{main.User{Name:"Tom", Age:15}, main.User{Name:"Bob", Age:30}}}

説明

  • ioutil.ReadFile でファイルを読み込みます。
  • yaml.Unmarshal で第 2 引数に渡した構造体に割り当てます。
Go