GoLand 2026.1 Help

構造検索と置換

従来の検索プロセスでは、ソースコードの構文とセマンティクスが考慮されていません。 正規表現を使用しても、GoLand はコードを通常のテキストとして扱います。 構造検索および置換SSR )アクションを使用すると、コード構造を考慮して、コード内の特定のコードパターンまたは文法構造を検索できます。

GoLand は、作成した 検索テンプレートと適用した 条件に基づいて、ソースコードのフラグメントを検索・置換します。

ターゲットを構造的に検索する

  1. メインメニューで 編集 | 検索 | 構造検索 に移動して、 構造検索​​ ダイアログを開きます。

    構造置換​​ ダイアログにすばやく切り替えるには、 「置換に切り替え」アイコン をクリックします。

  2. 構造検索​​ ダイアログで、次のいずれかの操作を行います。

    • ゼロからテンプレートを作成:テンプレート一覧から 下書きテンプレート​​ を選択し、エディター領域にコードテンプレート(例えば、自身のコードを表す場合は $variable$ など)を入力します。

      カスタムテンプレートを将来使用するために保存するには、ダイアログツールバーの テンプレートを保存​​ アイコン(「テンプレートを保存」ボタン )をクリックします。 テンプレートをインスペクションとして保存することもできます。

      構造検索ダイアログ

      GoLand は、作成したテンプレートをテンプレートリストの 最近 ノードに追加します。

    • 既存のテンプレートのいずれかをプロトタイプとして利用できます。必要なテンプレートを利用可能なテンプレート一覧から選択してください。

      例: 次のコードスニペットを検討してください。

      package company import ( "fmt" "regexp" ) type Employee struct { NAME string Age int Salary float64 Email string } type Manager struct { Employee Department string } type Documents struct { Passport int SocSecurity string IDCard string BirthCert string } type Department struct { Name string Manager *Manager Employees []Employee } func (e *Employee) Work() { fmt.Printf("%s is working.\n", e.NAME) } func (e *Employee) GetDetails() string { return fmt.Sprintf("Employee: %s, Age: %d, Salary: %.2f, Email: %s", e.NAME, e.Age, e.Salary, e.Email) } func (e *Employee) IsValidEmail() bool { var emailRegex = regexp.MustCompile(`^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$`) return emailRegex.MatchString(e.Email) }

      最初のフィールドが大文字で始まる 4 つのフィールドを持つ構造体を見つけましょう。

      既存のテンプレートのリストから、 Go | 宣言 に移動し、 構造体宣言​​ を選択します。 GoLand は、開いているファイル内に一致する構造があれば、エディターで即座にハイライトします。

      プロジェクト全体でこれらの構造を検索するには、 検索 をクリックします。

      既存のテンプレートダイアログ
  3. 構造検索​​ ダイアログには、選択したテンプレートとそのフィルターの値が表示されます。 既存のフィルターの編集や、正規表現や スクリプト制約などの新しい 条件の追加が可能です。 コード変数にキャレットを置き、フィルター領域を使用してフィルターを管理します。

    例: $field$ 変数の 数​​ 修飾子を変更し、 最大​​ 値を 3 に設定できます。 ハイライト表示される結果はこの設定によって制限され、最大 3 つのフィールドが含まれるようになります。

    「フィルターを編集」ポップアップ

    あるいは、より詳細な検索を行うには、検索テンプレートを次のように変更できます。

    type $name$ struct { $field$ $fieldType$ $field1$ $field1Type$ $field2$ $field2Type$ $field3$ $field3Type$ }
  4. この例では、 $field$ 変数に テキスト 修飾子を追加します。

  5. テキスト 修飾子の場合は、次の正規表現を入力します。

    \b[A-Za-z]*[A-Z]{2,}[A-Za-z]*\b

    この場合、GoLand は最初のフィールドに大文字が含まれる構造体のみを検索します。

    フィルターダイアログで正規表現を追加

    選択した言語に応じて、追加のオプションも利用できます。

    例: 次のオプションを確認します。

    • 言語: リストを使用して、検索に含めるファイルの種類を選択します。 この場合は Go です。

    • ターゲット: リストを使用して、検索する項目を選択します。

    • 挿入されたコード​​: 選択すると、HTML 内の JavaScript や Java 内の SQL などの挿入されたコードも検索に含まれます。

    • 大文字と小文字を区別 :選択すると、検索結果は検索ターゲットの大文字・小文字を一致させます。

  6. 検索範囲(プロジェクト、モジュール、ディレクトリ、カスタムスコープ)を指定します。

  7. 検索 をクリックしてください。

    GoLand は 検索 ツールウィンドウに結果を表示します。

    検索ツールウィンドウの結果

    新しい検索テンプレート インスペクションを構造検索にカスタムテンプレートとして追加できます。 これを行うには、 検索 ツールウィンドウで テンプレートからインスペクションを作成​​ をクリックします。 その後、このテンプレートを再利用してコードをインスペクションできます。

検索テンプレートを共有する

エクスポートやインポートにより、検索テンプレートを同僚と共有できます。

  1. 構造検索​​ ダイアログ(編集 | 検索 | 構造検索 )で、 新しい検索テンプレートを作成するか、既存のテンプレートを使用します。

  2. テンプレートをエクスポートするには、 「テンプレートをクリップボードにエクスポート」アイコン をクリックします。 GoLand は、テンプレートの XML 表現をクリップボードに追加します(クリップボードの内容を表示するには Ctrl+Shift+V を押します)。 この表現は、チャット、メール、フォーラムで他の開発者と共有できます。

    テンプレートをインポートするには、共有 XML コードを任意の場所(メール、チャット、フォーラム)からコピー(Ctrl+C )し、 構造検索​​ ダイアログで 「クリップボードからテンプレートをインポート」アイコン をクリックします。 GoLand は XML コード表現を取得し、変数やスコープが存在する場合はそれらを含むテンプレートへ変換します。

2026 年 5 月 22 日