GoLand 2025.3 Help

Go 模板

结构化搜索可帮助您查找与用户自定义搜索模板匹配的代码段。 如果模板匹配源代码的一部分,则相应的表达式会被高亮显示。 搜索模板本质上是由文本、变量、筛选器、作用域和上下文组成的查询。 通过使用这些元素,您可以优化搜索并获得更精确的结果。

一个 变量 是由美元符号括起来的字符序列,例如, $name$$field$

下面的屏幕截图显示了一个用于搜索结构体的模板。

未使用过滤器的变量

修饰符 是可应用于变量和搜索模板的用户定义条件。 它们允许您:

  • 检查变量出现的次数,

  • 验证变量的类型,

  • 将变量与纯文本或正则表达式进行匹配,

  • 应用 Groovy 脚本。

有关可用修饰符的完整列表,请参见 搜索模板、修饰符和脚本约束

下一个示例展示了与之前相同的模板,但将 $name$ 变量的 文本 修饰符设置为 Employee。 请注意编辑器中高亮显示的搜索结果发生了怎样的变化。

应用了文本筛选器的变量

查找字段名为大写的字段

  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) }

      让我们查找一个具有四个字段的 struct,第一个字段以大写字母开头。

      在现有模板列表中,导航到 Go|声明 并选择 结构体声明。 如果打开的文件中存在匹配项,GoLand 会立即在编辑器中高亮显示匹配构造。

      点击 查找 ,在整个项目中搜索这些结构。

      现有模板对话框
  3. 结构搜索 对话框中会显示所选模板及其过滤器的值。 您可以编辑现有过滤器,或添加新的 条件 ,例如正则表达式或 脚本约束。 将插入符号置于某个代码变量上,并使用过滤器区域管理其过滤器。

    例如,您可以更改 计数 修饰符的 $field$ 变量,并将其 最大值 值设置为 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 仅搜索第一个字段中具有大写字符的 struct。

    在过滤器对话框中添加正则表达式

    还提供其他选项,具体取决于所选语言。

    例如,请查看以下选项:

    • 语言 :使用该列表选择要在搜索中包含的文件类型。 在此情况下,它为 Go

    • 目标 :使用该列表选择要搜索的项。

    • 注入的代码 :选中后,诸如 HTML 中的 JavaScript 或 Java 中的 SQL 等注入的代码将包含在搜索中。

    • 区分大小写 :选中后,搜索结果将与搜索目标的大小写匹配。

  6. 指定搜索范围:项目、模块、目录或自定义范围。

  7. 单击 查找

    GoLand 会在 查找 工具窗口中显示结果。

    在“查找工具”窗口中显示的结果

    您可以将新的搜索模板作为自定义模板添加到 结构化搜索检查。 为此,请在 查找 工具窗口中点击 从模板创建检查。 随后即可重复使用它来检查您的代码。

最后修改日期: 2025年 12月 5日