🚀 VS Code で で入手しましょう!

Visual Studio Code へ移動

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

Go extension banner

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

"VS Code Go 入門" を視聴して、VS Code Go を使用して最初の 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 設定を使用して追加の lint チェックを追加し、go.lintTool 設定を使用して lint ツール (staticcheckgolangci-lint、または revive) の選択を構成できます。

フォーマット

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

デフォルトでは、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 ファイルにインポートできるパッケージのリストを取得します。1 つを選択すると、Go ファイルのインポートブロックに追加されます。

リファクタリング

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

デバッグ

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

セットアップ手順、サポートされている機能、構成、リモートデバッグに関する情報、およびトラブルシューティングガイドについては、VS Code での Go プログラムのデバッグをお読みください。変数検査、ブレークポイントの設定、および言語に依存しないその他のアクティビティなどの一般的なデバッグ機能については、VS Code デバッグを確認してください。

Go 固有の機能は次のとおりです

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

次のステップ

これは、VS Code 内の Go 拡張機能の機能を示す簡単な概要でした。詳細については、Go 拡張機能のREADMEで提供されている詳細を参照してください。

Go 拡張機能の最新機能/バグ修正に関する最新情報を入手するには、CHANGELOG を参照してください。

問題や機能のリクエストがある場合は、Go 拡張機能の vscode-go リポジトリに自由にログを記録してください。

VS Code の詳細については、次のトピックをお試しください