Visual Studio CodeでのGo
Visual Studio CodeのGo拡張機能を使用すると、IntelliSense、コードナビゲーション、シンボル検索、テスト、デバッグなど、Go開発に役立つ多くの機能が利用できます。

Go拡張機能は、VS Codeのマーケットプレイスからインストールできます。
VS Code Goを使用して最初のGoアプリケーションを構築する方法については、「VS Code Go入門」をご覧ください。
この記事では、Go拡張機能が提供する機能の一部のみを説明しています。サポートされている機能の完全かつ最新のリストについては、拡張機能のドキュメントを参照してください。
IntelliSense

IntelliSense機能は、GoチームがメンテナンスするGo言語サーバーであるgoplsによって提供されます。gopls設定を使用して、goplsの動作を構成できます。
セマンティックシンタックスハイライト
デフォルトのTextMateベースの構文ハイライトよりも優れた構文ハイライトのために、Goplsのui.semanticTokens設定をオンにしてセマンティックハイライトを有効にすることをお勧めします。
"gopls": { "ui.semanticTokens": true }
自動補完
Goファイルに入力すると、IntelliSenseが補完候補を提供します。これは、現在、インポート済み、およびまだインポートされていないパッケージのメンバーにも機能します。任意のパッケージ名の後に.と入力するだけで、対応するパッケージメンバーの候補が表示されます。
ヒント: ⌃Space (Windows, Linux Ctrl+Space) を使用して、候補を手動でトリガーします。
ホバー情報
任意の変数、関数、または構造体にカーソルを合わせると、その項目に関するドキュメント、シグネチャなどの情報が表示されます。
シグネチャヘルプ
関数を呼び出すときに(を開くと、関数のシグネチャヘルプがポップアップ表示されます。パラメータを入力し続けると、ヒント(下線)が次のパラメータに移動します。
ヒント: 関数呼び出しの
()内にカーソルがあるときに、⇧⌘Space (Windows, Linux Ctrl+Shift+Space) を使用してシグネチャヘルプを手動でトリガーします。
コード ナビゲーション
コードナビゲーション機能は、エディターのコンテキストメニューから利用できます。
- 定義へ移動 F12 - 型定義のソースコードに移動します。
- 型定義へ移動 - シンボルを定義する型に移動します。
- 定義をピーク ⌥F12 (Windows Alt+F12, Linux Ctrl+Shift+F10) - 型定義を含むピークウィンドウを表示します。
- 参照へ移動 ⇧F12 (Windows, Linux Shift+F12) - 型のすべての参照を表示します。
- 呼び出し階層を表示 ⇧⌥H (Windows, Linux Shift+Alt+H) - 関数からの、または関数へのすべての呼び出しを表示します。
- 実装へ移動 ⌘F12 (Windows, Linux Ctrl+F12) - インターフェース(インターフェース型シンボルでトリガーされた場合)のすべての実装、または型が実装するインターフェース(具象型シンボルでトリガーされた場合)のリストを含むピークウィンドウを表示します。
- すべての実装を検索 - インターフェース(インターフェース型シンボルでトリガーされた場合)のすべての実装、または型が実装するインターフェース(具象型シンボルでトリガーされた場合)を表示します。
コマンドパレット(⇧⌘P (Windows, Linux Ctrl+Shift+P))からGo to Symbolコマンドを使用してシンボル検索でナビゲートできます。
- ファイル内のシンボルへ移動 - ⇧⌘O (Windows, Linux Ctrl+Shift+O)
- ワークスペース内のシンボルへ移動 - ⌘T (Windows, Linux Ctrl+T)
Go: Toggle Test Fileコマンドを使用して、Goファイルとそのテスト実装の間を行き来することもできます。
ビルドと診断
Go言語サーバー(gopls)は、ワークスペースで見つかったビルドエラーとvetエラーを検出します。上記を実行した結果のエラーと警告は、エディターに赤/緑の波線で表示されます。これらの診断は、問題パネル(表示 > 問題)にも表示されます。
go.lintOnSave設定を使用して追加のlintチェックを追加し、go.lintTool設定を使用して選択したlintingツール(staticcheck、golangci-lint、またはrevive)を構成できます。
フォーマット
Goファイルは、⇧⌥F (Windows Shift+Alt+F, Linux Ctrl+Shift+I) を使用するか、コマンドパレットまたはエディターのコンテキストメニューからドキュメントのフォーマットコマンドを実行してフォーマットできます。
デフォルトでは、Goファイルを保存するとフォーマットが実行されます。[go]言語識別子に対してeditor.formatOnSaveをfalseに設定することで、この動作を無効にできます。これはJSON設定ファイルを使用して変更できます。
"[go]": {
"editor.formatOnSave": false
}
Goファイルに対して複数のフォーマッターが有効になっている場合は、Go拡張機能をデフォルトのフォーマッターとして選択できます。
"[go]": {
"editor.defaultFormatter": "golang.go"
}
フォーマットはgoplsによって提供されます。gofumptスタイルのフォーマットが必要な場合は、goplsをgofumptを使用するように構成できます。
"gopls": {
"formatting.gofumpt": true
}
テスト
VS CodeのテストUIとエディターのCodeLens要素により、ユーザーは特定の関数、ファイル、パッケージ、またはワークスペースのテスト、ベンチマーク、プロファイルを簡単に実行できます。
または、同じ機能は一連のコマンドを介して利用できます。
コマンドパレットで「Go: test」と入力すると、多くのテスト関連コマンドを調べることができます。

上記の最初の3つは、gotestsを使用して、現在のパッケージ、ファイル、またはカーソル位置の関数のテストスケルトンを生成するために使用できます。最後のいくつかは、go testを使用して、現在のパッケージ、ファイル、またはカーソル位置でテストを実行するために使用できます。テストカバレッジを取得するためのコマンドもあります。
次を使用してテストを実行し、テストカバレッジを計算するように拡張機能を構成できます。
go.testOnSavego.coverOnSavego.testFlags
パッケージのインポート
拡張機能は、デフォルトでインポートを整理し、未使用のインポートを削除します。異なる動作が必要な場合は、これらの指示に従って、言語ごとのデフォルト設定を上書きできます。
Go: Add Importコマンドを実行して、Goファイルにインポートできるパッケージのリストを取得します。1つを選択すると、Goファイルのインポートブロックに追加されます。
リファクタリング
リファクタリングする領域(変数、関数本体など)を選択します。選択した領域に表示されるコードアクションの電球アイコンをクリックするか、VS CodeのコンテキストメニューからRefactoring...またはRename Symbol(F2)を選択します。
デバッグ
Go拡張機能を使用すると、Delveデバッガーを利用してGoコードをデバッグできます。
セットアップ手順、サポートされている機能、構成、リモートデバッグに関する情報、トラブルシューティングガイドについては、VS CodeでGoプログラムをデバッグするをお読みください。変数の検査、ブレークポイントの設定、その他の言語に依存しないアクティビティなどの一般的なデバッグ機能については、VS Codeのデバッグを参照してください。
Goに固有の機能の一部は次のとおりです。
- ローカルおよびリモートデバッグ
- Delveの式構文を使用したデータ検査
- デバッグコンソールからの
dlvコマンドを使用した動的な構成変更と検査オプション - システムゴルーチンの表示/非表示機能(
hideSystemGoroutines設定を使用) - 逆アセンブリビューのサポート(ソースコードを右クリックして逆アセンブリビューを開くを選択)
- 試験的な関数呼び出し、コア検査、Mozilla
rrサポート
次のステップ
これは、VS Code内のGo拡張機能の機能を簡単に説明したものです。詳細については、Go拡張機能のREADMEに記載されている詳細を参照してください。
Go拡張機能の最新機能/バグ修正については、CHANGELOGを参照してください。
問題や機能リクエストがある場合は、Go拡張機能のvscode-goリポジトリにログを記録してください。
VS Code についてさらに詳しく知りたい場合は、以下のトピックを試してください
- 基本的な編集 - VS Code エディターの基本事項を簡単に紹介します。
- 拡張機能をインストールする - マーケットプレイスで利用可能な他の拡張機能について学びます。
- コード ナビゲーション - ソースコード内をすばやく移動します。