TIG DX チーム所属の多賀です。また Go についての記事を書きます。
最近 Go 開発本体への加入が発表されるなど、盛り上がっている VSCode の Go extension ですが、私も基本は VSCode + Go extension を利用して開発しています。
開発する際によく利用するコマンドがいくつかありますので、まとめました。
環境
- VSCode: 1.45.1
- Go extension: 0.14.4
補完やその他機能を利用するために Go の Language Server Protocol の実装である gopls
を利用しています。
https://github.com/golang/tools/tree/master/gopls
Go extension 設定の go.useLanguageServer
を true
にしています。
その他の設定は以下の公式設定を利用しています。
https://github.com/golang/tools/blob/master/gopls/doc/vscode.md
コマンドの出し方
そもそもコマンドはどうやって出すかですが、
VSCode を開いて以下ショートカットキーで出てきます。
- Windows: Ctrl + Shift + P
- Mac: Command + Shift + P
あとは利用したいコマンドを検索して Enter を押せば実行できます。
(各コマンドに対してショートカットキーを割り振ることも可能です。)
利用するコマンド
1. Go: Restart Language Server
gopls を再起動するコマンドです。
コードを実装していて、何かしらうまく動かない (おかしなエラーが出る、補完が効かなくなる、etc) 場合に即座に試します。 大体治ります 。
2. Go: Generate Unit Tests For Function
カーソル直下の関数のテストコードを自動生成してくれます。
デフォルトで Table Driven Test の形で生成してくれるため、生成後はテストケースを追加するだけで Unit Test が書けてしまいます。
例えば以下の関数のテストを書きたいとなった場合に、コマンドを実行すると、
package util |
このようなコードが生成されます。 TODO 以下にケースを随時追加すれば動作します。
package util |
3. Go: Generate Interface Stubs
特定の interface を実装するためのメソッドを自動生成してくれます。
例: XXXReader
struct に io.Reader を実装したい
type XXXReader struct {} |
コマンドを入力すると、入力ダイアログが出てくるので以下を入力
# ${レシーバの変数名} ${struct名} ${interface} |
すると以下のコードが生成されます。
type XXXReader struct {} |
大量のメソッドを実装する必要があるケースでとても便利に使えます。
4. Go: Fill Struct
カーソル下の struct を field を初期値で穴埋めする形で自動生成してくれます。
このような struct 定義がある場合
type Hoge struct { |
以下のように生成されます。
h := Hoge{ |
field 定義がたくさんあり、どれが必要かわからなくなった際に、
とりあえず全部生成して必要な field だけ残すことがよくあります。
5. Go: Add Tags To Struct Fields
カーソル下の struct にタグを付与します。
struct 内にカーソル当てておく必要があります。
初期設定は、 json かつ omitempty で生成されます。 (設定で他のタグにできます。)
type Hoge struct { |
6. Go: Test Function At Cursor
カーソル下のテスト関数のみのテストを実行してくれます。
テストコードを修正して、すぐに試したいといったときに便利です。
7. Go: Install/Update Tools
Go extension で利用している コマンドを install/update します。
extension をいれたタイミングで install は自動でされるため、 update したいときに使います。
所感
個人的にはとりあえず 1. Go: Restart Language Server
だけでも覚えればだいぶ開発体験上がると思います。
ぜひ利用して、開発効率を向上させてください。