golangで設定記述にTOMLを使う
2016-07-28 Thu.
golang での設定記述言語は YAML の他に TOML も人気があるようです。
- go-yaml/yaml Star: 861
- BurntSushi/toml Star: 965
(2016/7/28 時点)
TOML はdein.vimのプラグイン記述でも使われていますし、 YAML に比べシンプルかつ、toml ライブラリの方が親切そうなので、TOML を使用しています。
使い方
TOML の仕様に沿って記述しますが、簡単な設定であればシンプルに記述できます。
golang のコード側では、コンフィグファイルに対応した struct を定義します。
toml ファイルに[]
で指定した名称と、代入する構造体のメンバの名称は揃えます。
golang が CamelCase なので toml も CamelCase になります。頭文字は問われないようです。
おおもと(ここでは Config)以下の構造体の名称は TOML 側では記述されません。
Array になるケース
テストケースのリクエストを TOML で書く場合等に Array を使いたくなると思います。
TOML は[[]]
で Array 要素を記述できます。
例として検索を行う API のテストケースを記述すると以下のようになります。
基本は上記と同様に、TOML に記載する Array になる要素の名称と、おおもとの構造体のメンバの名称を揃えます。 この際、該当のメンバの型を、各要素の値に対応した構造体の Array にします。
実態は普通の構造体なので、tag 等も普通に使えます。
構造体をクエリストリングに変換するgoogle/go-querystringのurl
タグも正常に動作します。
参考
toml については以下で詳しく説明されています。
Other Works
2024-05-11 Sat.
Powerfully Typed TypeScript
- TSKaigi 2024
2024-05-10 Fri.
pnpm の node_modules を探検して理解しよう
- ドワンゴ教育サービス開発者ブログ
2024-03-17 Sun.
neverthrow で局所的に Result 型を使い、 try-catch より安全に記述する
- Zenn
2023-12-20 Wed.
レガシーブラウザ向けのビルドオプションを剪定する
- ドワンゴ教育サービス開発者ブログ
2023-05-26 Fri.
Next.js で dynamic import を使い Client だけで動かす Component を実現する
- Zenn
2023-05-02 Tue.
Node.js でファイル名から拡張子を取り除く/取り出すために path.parse を使う
- Zenn
2023-02-27 Mon.
WSL2 で外部からアクセス可能にするために bridge mode を有効にする
- Zenn
2023-01-26 Thu.
init.vim & dein から init.lua & lazy.nvim へ、シンプル設定で移行した
- Zenn
2023-01-13 Fri.
kindle の本をブクログ形式の csv でエクスポートする@2023初春
- Zenn
2023-01-10 Tue.
自宅サーバの移設に際して docker から nerdctl に移行した
- Zenn
2023-01-10 Tue.
自宅サーバを rootless に移行した際のトラブル対応
- Zenn
2021-11-11 Thu.
並列実行した Promise で throw されても全てハンドルしたいときの方法(allSettled, finally, etc...)
- Zenn