GoLand注释模板配置分两步:文件级用File and Code Templates,函数/结构体级必须用Live Templates或Goanno插件;${GO_PACKAGE_NAME}自动获取包名,${NAME}为文件名;Live Templates需绑定methodName()等表达式并设Applicable in为Go: declaration。

GoLand 里配置注释模板,核心就两件事:文件级注释走 File and Code Templates,函数/结构体/接口级注释必须用 Live Templates 或插件(如 Goanno),否则无法动态读取当前上下文(比如函数名、参数、结构体名)。
新建 Go 文件自动带包注释
这个最简单,但容易漏掉关键变量。打开 Settings → Editor → File and Code Templates → Files → Go File,填入:
// @Author ${USER}
// @Date ${DATE} ${TIME}
// @Desc package ${GO_PACKAGE_NAME}
// @File ${NAME}.go
注意三点:
-
${GO_PACKAGE_NAME}是 GoLand 内置变量,能自动抓取当前目录的package名;手写package main就失去意义 -
${NAME}是文件名(不含 .go),不是结构体或函数名 —— 它只在新建文件时生效 - 别加空行或块注释
/* */,go doc只认紧贴package声明上方的//行
函数和结构体注释必须用 Live Template 或 Goanno
纯文本模板在这里完全失效。比如你想敲 mc + Tab 就生成带函数名和参数的注释,但写成:
// @Title Add // @Param a, b int // @Return int
→ 每次都要手动改 Add、a, b int,毫无效率。正确做法是启用表达式:
GoLand 2026.1.1 是 2026.1 发布后的首个维护修正版本,适合已经开始体验 2026.1 新功能并希望同步补丁的开发者。它更适合用于入门项目、现有项目迁移测试和 IDE 行为验证。
- 在
Live Templates中新建一个,Abbreviation 设为mc - Template text 填入:
// @Title ${FUNCTION_NAME} // @Param ${PARAMS} // @Return ${RETURN_TYPES} - 点击
Edit variables,给每个变量绑定表达式:
FUNCTION_NAME→methodName()
PARAMS→parameterTypesAndNames()
RETURN_TYPES→returnTypes() - 最关键:勾选
Enable live template with expression,并在Applicable in里选Go: declaration
不勾这个选项,所有表达式都当普通字符串处理,methodName() 就真输出 “methodName()” 四个字符。
用 Goanno 插件省掉模板调试成本
如果你不需要深度定制,Goanno 是更稳的选择。它内置了上下文感知逻辑,不用自己配 groovyScript:
- 安装后,在
Tools → Goanno Settings里直接编辑模板,支持${function_name}、${params}、${struct_name}等占位符 - 快捷键
Ctrl+Alt+/(Win)或Cmd+Option+/(Mac)直接作用于光标所在函数/结构体/接口上方 - 它会自动跳过未导出字段、忽略空行、校验首行是否为
//—— 这些都是手写模板容易翻车的地方 - 注意:插件生成的注释末尾不要加句号,
go doc解析时对标点敏感,// Add .可能被截断
Live Template 生效范围设错 = 模板不存在
很多人写了模板却按 Tab 没反应,90% 是因为 Applicable in 设置错了:
- 想在
func Foo() {}前加注释?必须选Go: declaration,不是statement或expression - 想在
type User struct上生效?同样选Go: declaration - 想对已选中的一段代码加
// TODO:包围?那就得选Go: statement,并勾选Reformat according to style - 没设范围,或者设成
Everywhere,模板根本不会出现在补全列表里
上下文变量(如 className()、fieldNames())只在对应语法节点下可用;光标停在函数体内部时,methodName() 就返回空。










