Go 模板
结构化搜索可帮助您查找与用户自定义搜索模板匹配的代码段。 如果模板匹配源代码的一部分,则相应的表达式会被高亮显示。 搜索模板本质上是由文本、变量、筛选器、作用域和上下文组成的查询。 通过使用这些元素,您可以优化搜索并获得更精确的结果。
一个 变量 是由美元符号括起来的字符序列,例如, $name$ 或 $field$。
下面的屏幕截图显示了一个用于搜索结构体的模板。

修饰符 是可应用于变量和搜索模板的用户定义条件。 它们允许您:
检查变量出现的次数,
验证变量的类型,
将变量与纯文本或正则表达式进行匹配,
应用 Groovy 脚本。
有关可用修饰符的完整列表,请参见 搜索模板、修饰符和脚本约束。
下一个示例展示了与之前相同的模板,但将 $name$ 变量的 文本 修饰符设置为 Employee。 请注意编辑器中高亮显示的搜索结果发生了怎样的变化。

查找字段名为大写的字段
在主菜单中,转到 以打开 结构搜索 对话框。
要快速切换到 结构替换 对话框,请点击
。
在 结构搜索 对话框中,执行以下操作之一:
从头创建模板:在模板列表中选择 草稿模板 ,并在编辑器区域中输入代码模板(例如,使用
$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,第一个字段以大写字母开头。
在现有模板列表中,导航到 并选择 结构体声明。 如果打开的文件中存在匹配项,GoLand 会立即在编辑器中高亮显示匹配构造。
点击 查找 ,在整个项目中搜索这些结构。

在 结构搜索 对话框中会显示所选模板及其过滤器的值。 您可以编辑现有过滤器,或添加新的 条件 ,例如正则表达式或 脚本约束。 将插入符号置于某个代码变量上,并使用过滤器区域管理其过滤器。
例如,您可以更改 计数 修饰符的
$field$变量,并将其 最大值 值设置为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 仅搜索第一个字段中具有大写字符的 struct。

还提供其他选项,具体取决于所选语言。
例如,请查看以下选项:
语言 :使用该列表选择要在搜索中包含的文件类型。 在此情况下,它为 Go。
目标 :使用该列表选择要搜索的项。
注入的代码 :选中后,诸如 HTML 中的 JavaScript 或 Java 中的 SQL 等注入的代码将包含在搜索中。
区分大小写 :选中后,搜索结果将与搜索目标的大小写匹配。
指定搜索范围:项目、模块、目录或自定义范围。
单击 查找。
GoLand 会在 查找 工具窗口中显示结果。

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