在上一个练习中,我们了解到在 Go 里写注释有两种方式:以//开头的单行注释,以及用/*和*/包裹的多行注释块。
在 Go 中,注释在给代码写文档时起着重要作用。godoc命令会用到它们,该命令会提取这些注释,生成关于 Go 包的文档。文档注释应该是一个完整的句子,以所描述事物的名称开头,以句号结尾。
注释应该放在包以及导出标识符之前,例如导出的函数、方法、包级变量、常量和结构体。这些内容你会在接下来的练习中学到更多。
一个包级变量可以长这样:
// TemperatureCelsius represents a certain temperature in degrees Celsius.
var TemperatureCelsius float64
包注释应该直接写在包声明(package x)之前,并以Package x ...开头,像这样:
// Package kelvin provides tools to convert
// temperatures to and from Kelvin.
package kelvin
函数注释应该直接写在函数声明之前。它应该是一个完整的句子,以函数名开头。例如,函数Calculate的导出注释应该写成Calculate ...的形式。它还应该说明函数接收哪些实参、用这些实参做什么,以及它的返回值意味着什么,最后以句号结尾):
// CelsiusFreezingTemp returns an integer value equal to the temperature at which water freezes in degrees Celsius.
func CelsiusFreezingTemp() int {
return 0
}
Goblinocus 是一个非常重视天气预报的国家。 由于你是一位著名、负责且技术精湛的开发者,他们请你编写一个程序,用来预报 Goblinocus 各个城市当前的天气状况。 你当时很忙,于是请一位朋友代劳。 过了一段时间,Goblinocus 的总统联系你,说看不懂你朋友写的代码。 你检查代码后发现,你的朋友没有尽到负责任程序员的本分,代码里没有任何注释。 你觉得有义务把程序说明清楚,让地精们也能看懂。
由于地精没有你那么聪明,他们忘了这个包应该为他们做什么。
请为package weather写一条注释,说明它的内容。
包注释应介绍这个包,并提供与整个包相关的信息。
Goblinocus 的总统有点偏执,担心未加注释的变量会被用来毁灭他们的国家。
请说明包变量CurrentCondition和CurrentLocation的用途,让总统放心。
这应告诉这个包的任何用户,这些变量存储什么信息,以及他们可以用这些信息做什么。
Goblinocus 的天气预报员想知道Forecast()函数做什么(但不要告诉他们它是如何工作的,因为不幸的是,他们会更加困惑)。
请为这个函数写一条注释,说明这个函数做什么,但不要说明它是如何做的。