VSCode で Go を書くための環境構築
環境
ゴール
- 高速な補完、フォーマット、シンタックスハイライトが VSCode で動作する
- vim-go の
:GoImport
のようにモジュールを選択して import できる - VSCode でデバッグできる(標準入力を伴う場合は入力した上でデバッグしたい)
手順
- VSCode にmicrosoft/vscode-goをインストールする
- (gopls がローカルにインストールされていない場合は)コマンドパレットから
Go: Install/Update tools
で gopls を選択 settings.json
のgo.useLanguageServe
を true に設定する- フォーマットはデフォルトが
goreturns
だが、変更する場合はsettings.json
のgo.formatTool
に値を設定する
これで標準入力を伴うデバッグ以外のゴールは達成。めちゃくちゃ簡単だ...
標準入力を伴うデバッグ
これはデバッグに使用する delve
が標準入力に対応していないので vscode-go でも対応できないとのことだが、ワークアラウンドが共有されていた。(Cannot debug programs which read from STDIN )
追加する内容はこのコメント参照
tasks.json
にdelve
を起動するタスクを追加するlaunch.json
に設定を追加し、起動済みのdelve
に attachしてデバッグができるようにする
以上を行うと、デバッグ前に1度タスクを実行するという手間は必要ではあるものの、デバッグ開始後に標準入力を受け付けるようになる。
その他
vscode-go で gopls が正しく動かないと思っていたらコードに package main とか宣言がないと動かない仕様だった。。 Go を書くのが久しぶりすぎて宣言忘れていたのも悪いが何かエラーを出して欲しい。そしてログをどこかに出力して欲しい...
— メロン (@yn2011) 2020年4月15日
こんなハマり方をする人はいないかもしれないが、注意しましょう。
ちなみにログがないと言っていましたが、ちゃんと出力されていました。( mac なら Library/Application\ Support/Code/logs/
配下)
あと、自分は Go なら Vim で書けばいいと思っていた派なんですが、フロントエンドは VSCode が圧倒的に向いているし、並行してバックエンドを書きたい場合もあるので VSCode でいいかなという気持ちになりました。