goland新建go文件时使用自定义模板需先创建专属模板组并绑定go语言和go module项目类型,设置缩写(如hnd)、模板文本及变量(如$name$),仅在含go.mod的项目中通过右键→new→go file触发。

GoLand 里新建 Go 文件时怎么用自定义模板?
默认新建 main.go 是“Simple application”模板,但你写工具包、测试文件或 HTTP handler 时,重复删 import、补 package 声明很烦。GoLand 允许为特定项目类型(比如 Go Module)绑定专属模板,不是全局改,而是按需生效。
关键点:模板必须关联到具体语言和文件后缀,且只在对应项目类型下触发。比如你在 Go Module 项目里右键 → New → Go File,才可能弹出你定义的 handler.go 模板;换成普通 Empty Project 就不会显示。
- 打开
Settings/Preferences → Editor → Live Templates - 点击右上角
+ → Template Group,起名如go-module-templates(名字不重要,但建议带项目类型标识) - 选中刚建的分组,再点
+ → Live Template - Abbreviation 填
hnd(这是你输入缩写后按 Tab 触发的快捷键),Description 写“HTTP handler template” - 在 Template text 区域粘贴:
package <code>handler</code> import ( "net/http" ) func <code>Handle</code>(w http.ResponseWriter, r *http.Request) { <code>// TODO</code> } - 点击
Define,勾选Go—— 这步必须做,否则新建 Go 文件时根本看不到这个模板 - 回到项目里,右键项目根目录 →
New → Go File,输入hnd+Tab,就能生成预设结构
为什么新建文件时没看到你的模板?
常见原因是模板没绑定语言或项目类型不匹配。GoLand 的模板激活依赖两个条件:当前编辑器上下文是 Go 文件、且项目被识别为 Go Module(即有 go.mod)。如果 go.mod 被误删或路径不对,IDE 会退化成普通文件夹,New → Go File 菜单里就只剩默认选项。
GoLand 2026.1.1 是 2026.1 发布后的首个维护修正版本,适合已经开始体验 2026.1 新功能并希望同步补丁的开发者。它更适合用于入门项目、现有项目迁移测试和 IDE 行为验证。
- 检查项目根目录是否存在
go.mod,内容是否非空(至少含module xxx和go x.x) - 右键项目名 →
Reload project,强制重新解析模块状态 - 确认模板设置里已勾选
Go,而不是只勾了Go (test)或漏勾 - 如果项目是通过
VCS → Checkout打开的,首次加载可能延迟识别模块,等右下角状态栏出现 “Go Modules: enabled” 再试
如何让模板自动填入当前包名或文件名?
硬编码 package handler 不灵活,实际开发中包名常随目录变。GoLand 支持变量插入,但要注意作用域限制:只有在新建文件对话框里输入的文件名,才能被模板捕获。
- 在 Template text 中把
package <code>handler改成package $NAME$ - 点击下方
Edit variables,找到NAME行,Expression 填fileNameWithoutExtension() - 这样当你新建文件时输入
user_handler.go,模板会自动展开为package user_handler - 注意:
$NAME$只在新建文件对话框中有效;如果直接在已有文件里用 Live Template(比如输入hnd+ Tab),它取的是当前文件名,不是你想要的新文件名
自定义模板影响其他项目吗?
不影响。Live Templates 默认是 IDE 级别配置,但你可以导出/导入 JSON 文件,在团队内同步。真正需要警惕的是“模板覆盖”问题:如果你定义了一个 abbreviation 为 main 的模板,它会盖掉 GoLand 自带的 main 模板,导致新建 main.go 时不再生成标准入口函数。
- 避免重名 abbreviation,比如用
ghnd代替hnd防冲突 - 模板启用范围可精确到“Only for Go Module projects”,在模板设置页底部勾选
Applicable in→Go Module - 如果误删了默认模板,重启 GoLand 后在
Live Templates页面右键 →Restore Defaults即可恢复
真正容易被忽略的是:模板变量 $NAME$ 在新建文件流程中只解析一次,后续改文件名不会联动更新 package 声明;手动改包名后,记得同步调整 import 路径,GoLand 不会自动修正跨包引用。










