この投稿は、 Go アドベントカレンダーの 6日目のものになります。 はじめに GoでYAMLを扱う際にデファクトになっているのは、おそらく github.com/go-yaml/yaml でしょう。 実装はC言語で実装された libyaml を Go に移植しつつ、 Go ならではの機能を足す作りになっているのですが、 cgo を使わずに pure Go で移植されており、開発者の気合を感じます。 枯れている libyaml を利用していることからも、 YAML の仕様を忠実に実装していることが期待できます。 ですが、このライブラリにはいくつか使いにくい点もあり、例えば以下のようなことはできませんでした 構造体を埋め込む場合に、埋め込む型をポインタで定義できない ( ※ ポインタなしは大丈夫 ) encoding/json とコンパチの インターフェース ( MarshalYAML()
![GoでYAMLを扱うすべての人を幸せにするべく、ライブラリをスクラッチから書いた話 - Qiita](https://cdn-ak-scissors.b.st-hatena.com/image/square/331fb9b09df229c7b6255419777223e15b98d103/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Fadvent-calendar-ogp-background-7940cd1c8db80a7ec40711d90f43539e.jpg%3Fixlib%3Drb-4.0.0%26w%3D1200%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk3MiZoPTM3OCZ0eHQ9R28lRTMlODElQTdZQU1MJUUzJTgyJTkyJUU2JTg5JUIxJUUzJTgxJTg2JUUzJTgxJTk5JUUzJTgxJUI5JUUzJTgxJUE2JUUzJTgxJUFFJUU0JUJBJUJBJUUzJTgyJTkyJUU1JUI5JUI4JUUzJTgxJTlCJUUzJTgxJUFCJUUzJTgxJTk5JUUzJTgyJThCJUUzJTgxJUI5JUUzJTgxJThGJUUzJTgwJTgxJUUzJTgzJUE5JUUzJTgyJUE0JUUzJTgzJTk2JUUzJTgzJUE5JUUzJTgzJUFBJUUzJTgyJTkyJUUzJTgyJUI5JUUzJTgyJUFGJUUzJTgzJUE5JUUzJTgzJTgzJUUzJTgzJTgxJUUzJTgxJThCJUUzJTgyJTg5JUU2JTlCJUI4JUUzJTgxJTg0JUUzJTgxJTlGJUU4JUE5JUIxJnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnR4dC1jb2xvcj0lMjMzQTNDM0MmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9NTYmcz0xNzUxNTY1ODk2YjYzNWQ0OWZmNTU4NDRjOWFhNzNhOA%26mark-x%3D120%26mark-y%3D96%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZoPTc2Jnc9OTcyJnR4dD0lNDBnb2NjeSZ0eHQtY29sb3I9JTIzM0EzQzNDJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTM2JnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnM9N2ExYjQ4Y2JiMTk3OWIwYjg1OGU2ZjJkY2U1ZWZhMTE%26blend-x%3D120%26blend-y%3D500%26blend-mode%3Dnormal%26s%3D45f00cfe599ada5dc828644587ebd9bb)