[Go] YAML ファイルを読み込む
作成日: 2018年03月07日
パッケージ gopkg.in/yaml.v2
の yaml.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 引数に渡した構造体に割り当てます。