VS Codeのエージェントモードを拡張するには、を試してください!

Visual Studio Code での Go

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

Go extension banner

Go 拡張機能は、VS Code の マーケットプレイスからインストールできます。

VS Code Go を使用して初めての Go アプリケーションをビルドする方法については、「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) - 型定義が表示されたピーク ウィンドウを表示します。
  • 参照へ移動 ⇧F12 (Windows、Linux では Shift+F12) - 型のすべての参照を表示します。
  • 呼び出し階層を表示 ⇧⌥H (Windows、Linux では Shift+Alt+H) - 関数からの、または関数へのすべての呼び出しを表示します。
  • 実装へ移動 ⌘F12 (Windows、Linux では Ctrl+F12) - インターフェースのすべての実装のリスト (インターフェース型シンボルでトリガーされた場合)、または型が実装するインターフェースのリスト (具象型シンボルでトリガーされた場合) が表示されたピーク ウィンドウを表示します。
  • すべての実装を検索 - インターフェースのすべての実装 (インターフェース型シンボルでトリガーされた場合)、または型が実装するインターフェース (具象型シンボルでトリガーされた場合) を表示します。

コマンド パレット (⇧⌘P (Windows、Linux では Ctrl+Shift+P)) からのシンボルへ移動コマンドを使用して、シンボル検索で移動できます。

  • ファイルのシンボルへ移動 - ⇧⌘O (Windows、Linux では Ctrl+Shift+O)
  • ワークスペースのシンボルへ移動 - ⌘T (Windows、Linux では Ctrl+T)

また、Go: テスト ファイルの切り替えコマンドを使用して、Go ファイルとそのテスト実装の間を前後に移動することもできます。

ビルドと診断

Go 言語サーバー (gopls) は、ワークスペースで見つかったビルドおよび vet エラーを検出します。上記を実行した際のエラーと警告は、エディターに赤/緑の波線で表示されます。これらの診断は、問題パネル (表示 > 問題) にも表示されます。

go.lintOnSave 設定を使用し、go.lintTool 設定を使用して選択したリンティング ツール (staticcheckgolangci-lint、または revive) を構成することで、追加のリンティング チェックを追加できます。

フォーマット

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

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

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

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

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

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

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

テスト

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

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

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

Test Commands

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

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

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

パッケージのインポート

拡張機能は既定でインポートを整理し、未使用のインポートを削除します。異なる動作が必要な場合は、これらの手順に従って、言語ごとの既定の設定を上書きできます。

Go: インポートの追加コマンドを実行して、Go ファイルにインポートできるパッケージのリストを取得します。いずれかを選択すると、Go ファイルのインポート ブロックに追加されます。

リファクタリング

リファクタリングする領域 (変数、関数本体など) を選択します。選択した領域に表示されるコード アクションの電球アイコンをクリックするか、VS Code のコンテキスト メニューからリファクタリング... またはシンボルの名前変更 (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 についてさらに詳しく知りたい場合は、以下のトピックを試してください