Go の struct tag の記法を編集する方法を記載します。
IntelliJ と VSCode の2つでの設定方法を記載しました。
VSCode
https://github.com/fatih/gomodifytagsを使います。
これは VSCode に限らず各種 Editor 向けにに Go の Struct tag の自動生成機能を提供してる便利ライブラリです。(後で知りました。)
How to use
手元に gomodifytags
を落としてきます。
go get github.com/fatih/gomodifytags
使い方は Ctrl + Shift + P で Add Tag..
を打つと 自動生成してくれるコマンドが出てきます。
ただ、なぜかこれもデフォルトが snake_case で、しかも omitempty
までついてきてしまいます。
フォーマットやデフォルトの omitempty
をつけたくないので setting.json
に以下を追記します。
各記法については gomodifytags
の README に記載してますのでそちらを参考にしてください。
"go.addTags": { "tags": "json", "options": "json=", "promptForTags": false, "transform": "camelcase" },
options の指定の仕方は以下の issue を参考にしました。
json 以外のタグの指定方法
sqlx などの ORM 系のライブラリを使うケースでは上記の設定に ORM で指定されているタグを指定します。
例えば、sqlx を使う場合には db
をカンマつなぎで tags フィールドに追加します。
"go.addTags": { "tags": "json,db", // カンマつなぎ "options": "", "promptForTags": false, "transform": "snakecase" },
promptForTags
option は add struct tag するときにどのタグを入れるかを GUI で逐一確認してくれる option です。json タグは入れたくないけど db タグは入れたい、みたいなことを struct で個別に設定したいときに便利です。
IntelliJ
IntelliJ はデフォルトの自動 struct tag 補完は snake_case が採用されているのですが、仕事ではほぼ camelCase しか使わないのでなんとか camelCase に変更したいと思ったのが今回のモチベーションです。
詳細は以下のFAQに記載してあります。これをみれば大体OKでした。
https://intellij-support.jetbrains.com/hc/en-us/community/posts/360000525304-camelCase-json-for-Golang-struct-tadsintellij-support.jetbrains.com
以下の順で Go Struct Tags を編集します。