5.3. 注释
Go支持C语言风格的/* */
块注释,也支持C++风格的//
行注释。 当然,行注释更通用,块注释主要用于针对包的详细说明或者屏蔽大块的代码。
程序 - 也是网页服务器 - godoc 处理 Go 的源代码,从中提取包的文档。顶层声明前的注解,如无空行相隔,和声明一起提取作为条目的解释文字。这些注解的性质和风格决定着 godoc 产生的文档的质量。
每个包都应有一个包注解,即 package 前的块注解。对多个文件的包,包注解只需出现在一个文件中,随便哪个。包注解应该介绍此包,并作为一个整体提供此包的对应信息。它首先出现在 godoc 页面,来安排好后续的详细文档
/*
The regexp package implements a simple library for
regular expressions.
The syntax of the regular expressions accepted is:
regexp:
concatenation { '|' concatenation }
concatenation:
{ closure }
closure:
term [ '*' | '+' | '?' ]
term:
'^'
'$'
'.'
character
'[' [ '^' ] character-ranges ']'
'(' regexp ')'
*/
package regexp
包如果简单,注释可以简短。
// The path package implements utility routines for
// manipulating slash-separated filename paths.
注解不需多余排版如星星横幅等。生成的结果呈现时可能不是等宽字体,所以不要靠空格对齐, godoc,类似 gofmt 照管这些。最后,注解是不加解释的文本,HTML和其他例如 this 会原样照搬,所以应 避免使用。
在包里,紧跟顶层声明前的注解作为此声明的文注解,程序中每个导出(大写)的名字都应该有文注解。
文注解最好是完整的句子。首句应该以声明的名字开始的一句话的总结。
// Compile parses a regular expression and returns, if successful, a Regexp
// object that can be used to match against text.
func Compile(str string) (regexp *Regexp, error os.Error) {
Go 的声明句法允许编组。单一的文注解可以引出一组相联的常量或变量。因为整组声明一起展现,注解可以很粗略:
// Error codes returned by failures to parse an expression.
var (
ErrInternal = os.NewError("internal error")
ErrUnmatchedLpar = os.NewError("unmatched '('")
ErrUnmatchedRpar = os.NewError("unmatched ')'")
...
)
对于私有名称,编组也可以指出它们之间的联系,例如一系列的变量由一个互斥保护。
var (
countLock sync.Mutex
inputCount uint32
outputCount uint32
errorCount uint32
)