構造検索と置換
従来の検索プロセスでは、ソースコードの構文とセマンティクスが考慮されていません。 正規表現を使用しても、GoLand はコードを通常のテキストとして扱います。 構造検索および置換 (SSR )アクションを使用すると、コード構造を考慮して、コード内の特定のコードパターンまたは文法構造を検索できます。
GoLand は、作成した 検索テンプレートと適用した 条件に基づいて、ソースコードのフラグメントを検索・置換します。
ターゲットを構造的に検索する
メインメニューで に移動して、 構造検索 ダイアログを開きます。
構造置換 ダイアログにすばやく切り替えるには、
をクリックします。
構造検索 ダイアログで、次のいずれかの操作を行います。
ゼロからテンプレートを作成:テンプレート一覧から 下書きテンプレート を選択し、エディター領域にコードテンプレート(例えば、自身のコードを表す場合は
$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 つのフィールドを持つ構造体を見つけましょう。
既存のテンプレートのリストから、 に移動し、 構造体宣言 を選択します。 GoLand は、開いているファイル内に一致する構造があれば、エディターで即座にハイライトします。
プロジェクト全体でこれらの構造を検索するには、 検索 をクリックします。

構造検索 ダイアログには、選択したテンプレートとそのフィルターの値が表示されます。 既存のフィルターの編集や、正規表現や スクリプト制約などの新しい 条件の追加が可能です。 コード変数にキャレットを置き、フィルター領域を使用してフィルターを管理します。
例:
$field$変数の 数 修飾子を変更し、 最大 値を3に設定できます。 ハイライト表示される結果はこの設定によって制限され、最大 3 つのフィールドが含まれるようになります。
あるいは、より詳細な検索を行うには、検索テンプレートを次のように変更できます。
type $name$ struct { $field$ $fieldType$ $field1$ $field1Type$ $field2$ $field2Type$ $field3$ $field3Type$ }この例では、
$field$変数に テキスト 修飾子を追加します。テキスト 修飾子の場合は、次の正規表現を入力します。
\b[A-Za-z]*[A-Z]{2,}[A-Za-z]*\bこの場合、GoLand は最初のフィールドに大文字が含まれる構造体のみを検索します。

選択した言語に応じて、追加のオプションも利用できます。
例: 次のオプションを確認します。
言語: リストを使用して、検索に含めるファイルの種類を選択します。 この場合は Go です。
ターゲット: リストを使用して、検索する項目を選択します。
挿入されたコード: 選択すると、HTML 内の JavaScript や Java 内の SQL などの挿入されたコードも検索に含まれます。
大文字と小文字を区別 :選択すると、検索結果は検索ターゲットの大文字・小文字を一致させます。
検索範囲(プロジェクト、モジュール、ディレクトリ、カスタムスコープ)を指定します。
検索 をクリックしてください。
GoLand は 検索 ツールウィンドウに結果を表示します。

新しい検索テンプレート インスペクションを構造検索にカスタムテンプレートとして追加できます。 これを行うには、 検索 ツールウィンドウで テンプレートからインスペクションを作成 をクリックします。 その後、このテンプレートを再利用してコードをインスペクションできます。
検索テンプレートを共有する
エクスポートやインポートにより、検索テンプレートを同僚と共有できます。
構造検索 ダイアログ( )で、 新しい検索テンプレートを作成するか、既存のテンプレートを使用します。
テンプレートをエクスポートするには、
をクリックします。 GoLand は、テンプレートの XML 表現をクリップボードに追加します(クリップボードの内容を表示するには Ctrl+Shift+V を押します)。 この表現は、チャット、メール、フォーラムで他の開発者と共有できます。
テンプレートをインポートするには、共有 XML コードを任意の場所(メール、チャット、フォーラム)からコピー(Ctrl+C )し、 構造検索 ダイアログで
をクリックします。 GoLand は XML コード表現を取得し、変数やスコープが存在する場合はそれらを含むテンプレートへ変換します。