Visual Studio Code における Go

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

Go extension banner

Go 拡張機能は、VS Code の Marketplace からインストールできます。

VS Code Go を使用して最初の Go アプリケーションをビルドする方法については、動画「Getting started with VS Code Go」をご覧ください。

この記事では、Go 拡張機能が提供する機能の一部のみを説明しています。サポートされている機能の完全かつ最新のリストについては、拡張機能のドキュメントを参照してください。

IntelliSense

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 設定を使用して選択したリンターツール(staticcheckgolangci-lint、または revive)を構成することで、追加の lint チェックを追加できます。

フォーマット

⇧⌥F (Windows は Shift+Alt+F、Linux は Ctrl+Shift+I) を使用するか、コマンド パレットまたはエディタのコンテキスト メニューから「ドキュメントのフォーマット」コマンドを実行して、Go ファイルをフォーマットできます。

デフォルトでは、Go ファイルを保存するときにフォーマットが実行されます。この動作を無効にするには、[go] 言語識別子に対して editor.formatOnSave VS Code で開く VS Code Insiders で開く false に設定します。これは JSON 設定ファイルを使用して変更できます。

"[go]": {
        "editor.formatOnSave": false
}

Go ファイルに対して複数のフォーマッタが有効になっている場合は、デフォルトのフォーマッタとして Go 拡張機能を選択できます。

"[go]": {
    "editor.defaultFormatter": "golang.go"
}

フォーマットは gopls によって提供されます。gofumpt スタイルのフォーマットが必要な場合は、gofumpt を使用するように gopls を構成できます。

"gopls": {
    "formatting.gofumpt": true
}

テスト

VS Code のテスト UIおよびエディタの CodeLens 要素を使用すると、特定の関数、ファイル、パッケージ、またはワークスペースに対するテスト、ベンチマーク、プロファイルを簡単に実行できます。

あるいは、一連のコマンドを介して同様の機能を利用することもできます。

コマンド パレットに「Go: test」と入力すると、テストに関連する多くのコマンドを確認できます。

Test Commands

上記の最初の 3 つは、gotests を使用して、現在のパッケージ、ファイル、またはカーソル位置の関数のテスト スケルトンを生成するために使用できます。最後のいくつかは、go test を使用して、現在のパッケージ、ファイル、またはカーソル位置でテストを実行するために使用できます。テスト カバレッジを取得するためのコマンドもあります。

拡張機能がテストを実行してテスト カバレッジを計算するように構成するには、以下を使用します。

  • go.testOnSave
  • go.coverOnSave
  • go.testFlags

パッケージのインポート

この拡張機能は、デフォルトでインポートを整理し、未使用のインポートを削除します。異なる動作にしたい場合は、こちらの手順に従って、言語ごとのデフォルト設定をオーバーライドできます。

「Go: Add Import」コマンドを実行すると、Go ファイルにインポート可能なパッケージの一覧が表示されます。パッケージを選択すると、Go ファイルのインポート ブロックに追加されます。

リファクタリング

リファクタリングする領域(変数、関数本体など)を選択します。選択した領域に表示されるコード アクションの電球アイコンをクリックするか、VS Code のコンテキスト メニューから「リファクタリング...」または「シンボルの変更」 (F2) を選択します。

デバッグ

Go 拡張機能では、Delve デバッガーを利用して Go コードをデバッグできます。

セットアップ手順、サポートされている機能、構成、リモート デバッグに関する情報、およびトラブルシューティング ガイドについては、「Debug Go programs in VS Code」を参照してください。変数のインスペクト、ブレークポイントの設定、その他言語に依存しない一般的なデバッグ機能については、「VS Code デバッグ」を参照してください。

Go 固有のいくつかの機能は以下のとおりです。

  • ローカルおよびリモート デバッグ
  • Delve の式構文を使用したデータ インスペクション
  • デバッグ コンソール(DEBUG CONSOLE)からの dlv コマンドによる、動的な構成変更およびインスペクション オプション
  • システム goroutine を非表示/表示する機能 (hideSystemGoroutines 構成を使用)
  • 逆アセンブル ビューのサポート(ソース コードを右クリックして「逆アセンブル ビューを開く」を選択します)
  • 試験的な関数呼び出し、コア インスペクション、Mozilla rr サポート

次のステップ

以上、VS Code 内での Go 拡張機能の簡単な概要について説明しました。詳細については、Go 拡張機能の README に記載されている詳細を参照してください。

Go 拡張機能の最新機能やバグ修正について最新情報を確認するには、CHANGELOG を参照してください。

問題が発生した場合や機能の要望がある場合は、Go 拡張機能の vscode-go リポジトリにお気軽にお寄せください。

VS Codeについてさらに詳しく知りたい場合は、これらのトピックを試してみてください。

© . This site is unofficial and not affiliated with Microsoft.