贝利信息

Golang单行注释与多行注释规范

日期:2026-01-05 00:00 / 作者:P粉602998670
Go注释规范要求单行注释//置于代码上方,禁用行尾注释;多行注释/ /仅用于包说明或调试,不可替代godoc;函数/结构体注释须用顶格//块且无空行;包注释须在doc.go中以// Package开头。

单行注释必须写在代码上方或右侧,不能写在行末干扰阅读

Go 社区普遍接受的实践是:单行注释 // 优先放在被注释代码的正上方,而非行尾。虽然语法允许 a := 1 // 初始化计数器 这种写法,但一旦逻辑变复杂(比如带条件、嵌套或长表达式),行尾注释会严重拉宽代码行、破坏对齐,也容易和后续修改脱节。

多行注释只用于包说明或临时屏蔽代码,别用它写函数文档

/* ... */ 在 Go 中有明确分工:它不是 godoc 的目标注释形式。Go 工具链(包括 go doc 和 VS Code 插件)默认只提取以 // 开头、紧贴声明上方的注释生成文档。用 /* */ 写函数说明,等于主动放弃自动生成文档的能力。

函数和结构体注释必须用 // + godoc 格式,否则 IDE 不识别

VS Code 的 Go 扩展、GoLand 的参数提示、go doc 命令,全部依赖「紧邻声明上方的连续 // 注释块」。这个块最好包含函数作用、参数含义、返回值说明,甚至示例(用 // Example: 开头会被 godoc 特殊处理)。

// Add 计算两个整数之和。
// 参数:
//   a: 被加数
//   b: 加数
// 返回值:
//   int: 和
// Example:
//   sum := Add(2, 3) // sum == 5
func Add(a, b int) int {
    return a + b
}

包注释要单独放在 doc.go,且必须是 // 开头

一个包只能有一个权威包注释,它应该解释包的用途、设计意图、典型用法,而不是罗列所有导出函数。Go 工具要求这个注释必须出现在 package xxx 声明的正上方,且推荐放在独立的 doc.go 文件中——这样避免业务文件被注释“撑大”,也方便统一维护。

// Package mathutil 提供基础数学工具函数。
//
// 本包不依赖外部库,所有函数均为纯函数。
// 典型用法:
//   result := mathutil.Max(10, 20)
package mathutil

真正难的不是写注释,而是让注释和代码一起活下来:函数签名改了,参数名变了,注释里还写着旧名字;包重构拆分后,doc.go 忘记同步更新。这些地方没有语法报错,但会悄悄腐蚀团队的理解成本。