반응형
Go언어에서 YAML 라이브러리를 이용하면 간편하게 YMAL 값을 다룰 수 있다.
해당 라이브러리의 문서는 아래에서 확인할 수 있다.
간단하게 YAML를 언마샬링 하는 예제를 확인해보자.
- person.yaml
name: Martin D'vloper
job: Developer
skill: Elite
employed: True
foods:
- Apple
- Orange
- Strawberry
- Mango
languages:
perl: Elite
python: Elite
이전에 학습했듯이 json를 다루는 방식과 거의 동일하다.
필드 태그 형식은 다음과 같다.
yaml:"[<key>][,<flag1>[,<flag2>]]"
package main
import (
"fmt"
"log"
"io/ioutil"
"gopkg.in/yaml.v3"
)
type Person struct {
Name string `yaml:"name"`
Job string `yaml:"job"`
Skill string `yaml:"skill"`
Employed bool `yaml:"employed"`
Foods []string `yaml:"foods"`
Languages Languages `yaml:"languages"`
}
type Languages struct {
Perl string `yaml:"perl"`
Python string `yaml:"python"`
}
func getPerson(fileName string) (*Person, error) {
buf, err := ioutil.ReadFile(fileName)
if err != nil {
return nil, err
}
p := &Person{}
err = yaml.Unmarshal(buf, p)
if err != nil {
log.Fatalf("Unmarshal: %v", err)
}
return p, nil
}
func main() {
fmt.Println("Parsing YAML file")
p, err := getPerson("person.yaml")
if err != nil {
log.Fatal(err)
}
fmt.Printf("%+v\n", p)
}
YAML 를 Go type으로 변환해주는 사이트가 있다. 참고하자.
반응형