在上一個練習中,我們看到在 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()函式做了什麼(但別告訴他們它是怎麼運作的,因為很不幸地,那樣只會讓他們更困惑)。請為這個函式寫一段註解,說明它做了什麼,但不要說明它怎麼做到的。