yn2011's blog

技術メモ

VSCode で Go を書くための環境構築

環境

ゴール

  • 高速な補完、フォーマット、シンタックスハイライトが VSCode で動作する
  • vim-go の :GoImport のようにモジュールを選択して import できる
  • VSCodeデバッグできる(標準入力を伴う場合は入力した上でデバッグしたい)

手順

  • VSCodemicrosoft/vscode-goをインストールする
  • (gopls がローカルにインストールされていない場合は)コマンドパレットから Go: Install/Update tools で gopls を選択
  • settings.jsongo.useLanguageServe を true に設定する
  • フォーマットはデフォルトが goreturns だが、変更する場合は settings.jsongo.formatTool に値を設定する

これで標準入力を伴うデバッグ以外のゴールは達成。めちゃくちゃ簡単だ...

標準入力を伴うデバッグ

これはデバッグに使用する delve が標準入力に対応していないので vscode-go でも対応できないとのことだが、ワークアラウンドが共有されていた。(Cannot debug programs which read from STDIN

追加する内容はこのコメント参照

  • tasks.jsondelve を起動するタスクを追加する
  • launch.json に設定を追加し、起動済みの delve に attachしてデバッグができるようにする

以上を行うと、デバッグ前に1度タスクを実行するという手間は必要ではあるものの、デバッグ開始後に標準入力を受け付けるようになる。

その他

こんなハマり方をする人はいないかもしれないが、注意しましょう。

ちなみにログがないと言っていましたが、ちゃんと出力されていました。( mac なら Library/Application\ Support/Code/logs/ 配下)

あと、自分は Go なら Vim で書けばいいと思っていた派なんですが、フロントエンドは VSCode が圧倒的に向いているし、並行してバックエンドを書きたい場合もあるので VSCode でいいかなという気持ちになりました。