Visual Studio Code での Go
Visual Studio Code の Go 拡張機能を使用すると、IntelliSense、コード ナビゲーション、シンボル検索、テスト、デバッグなど、Go 開発に役立つ多くの機能を利用できます。
Go 拡張機能は、VS Code Marketplace からインストールできます。
VS Code Go を使用して最初の Go アプリケーションをビルドする方法については、「Getting started with 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) - 型定義を含む Peek ウィンドウを表示します。
- 参照へ移動 ⇧F12 (Windows, Linux Shift+F12) - 型のすべての参照を表示します。
- 呼び出し階層の表示 ⇧⌥H (Windows, Linux Shift+Alt+H) - あるいは関数へのすべての呼び出しを表示します。
- 実装へ移動 ⌘F12 (Windows, Linux Ctrl+F12) - (インターフェース型シンボルでトリガーされた場合) インターフェースのすべての実装のリスト、または (具象型シンボルでトリガーされた場合) 型が実装するインターフェースのリストを含む Peek ウィンドウを表示します。
- すべての実装を検索 - (インターフェース型シンボルでトリガーされた場合) インターフェースのすべての実装、または (具象型シンボルでトリガーされた場合) 型が実装するインターフェースを表示します。
コマンド パレット (⇧⌘P (Windows, Linux Ctrl+Shift+P)) のシンボルへ移動コマンドを使用して、シンボル検索で移動できます。
- ファイル内のシンボルへ移動 - ⇧⌘O (Windows, Linux Ctrl+Shift+O)
- ワークスペースのシンボルへ移動 - ⌘T (Windows, Linux Ctrl+T)
Go: Toggle Test File コマンドを使用して、Go ファイルとそのテスト実装の間を行き来することもできます。
ビルドと診断
Go 言語サーバー (gopls
) は、ワークスペースで見つかったビルドエラーと vet エラーを検出します。上記いずれかを実行した際のエラーと警告は、エディターに赤/緑の波線で表示されます。これらの診断は、問題パネル (表示 > 問題) にも表示されます。
go.lintOnSave
設定を使用し、go.lintTool
設定を使用して選択した lint ツール (staticcheck
、golangci-lint
、または revive
) を構成することで、追加の lint チェックを追加できます。
フォーマット
⇧⌥F (Windows Shift+Alt+F, Linux Ctrl+Shift+I) を使用するか、コマンド パレットまたはエディターのコンテキスト メニューからドキュメントのフォーマットコマンドを実行して、Go ファイルをフォーマットできます。
デフォルトでは、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.testOnSave
go.coverOnSave
go.testFlags
パッケージのインポート
拡張機能は、デフォルトでインポートを整理し、未使用のインポートを削除します。異なる動作をさせたい場合は、これらの手順に従って、言語ごとのデフォルト設定をオーバーライドできます。
Go: Add Import コマンドを実行して、Go ファイルにインポートできるパッケージのリストを取得します。1 つ選択すると、Go ファイルのインポート ブロックに追加されます。
リファクタリング
リファクタリングする領域 (変数、関数本体など) を選択します。選択した領域に表示されるコード アクションの電球アイコンをクリックするか、VS Code のコンテキスト メニューから リファクタリング... またはシンボルの名前の変更 (F2) を選択します。
デバッグ
Go 拡張機能を使用すると、Delve デバッガーを利用して Go コードをデバッグできます。
セットアップ手順、サポートされている機能、構成、リモート デバッグに関する情報、およびトラブルシューティング ガイドについては、VS Code での Go プログラムのデバッグをお読みください。変数の検査、ブレークポイントの設定、その他の言語に依存しないアクティビティなどの一般的なデバッグ機能については、VS Code のデバッグを参照してください。
Go に固有の機能には、次のものがあります
- ローカルとリモートでのデバッグ
- Delve の式構文を使用したデータ検査
- デバッグ コンソールから
dlv
コマンドを使用した動的な構成変更と検査オプション - システム ゴルーチンを非表示/表示する機能 (
hideSystemGoroutines
構成を使用) - 逆アセンブリ ビューのサポート (ソース コードを右クリックして Open Disassembly View を選択)
- 実験的な関数呼び出し、コア検査、Mozilla
rr
のサポート
次のステップ
これは、VS Code 内の Go 拡張機能の機能を示す簡単な概要でした。詳細については、Go 拡張機能の README で提供されている詳細を参照してください。
Go 拡張機能の最新の機能/バグ修正に関する最新情報を入手するには、CHANGELOG を参照してください。
問題や機能のリクエストがある場合は、Go 拡張機能の vscode-go リポジトリにログを記録してください。
VS Code についてさらに詳しく知りたい場合は、以下のトピックを試してください
- 基本的な編集 - VS Code エディターの基本事項を簡単に紹介します。
- 拡張機能をインストールする - マーケットプレイスで利用可能な他の拡張機能について学びます。
- コード ナビゲーション - ソースコード内をすばやく移動します。