## 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
)
```
- 1. 關于本文
- 2. Go語言簡介
- 3. 安裝go環境
- 3.1. 簡介
- 3.2. 安裝C語言工具
- 3.3. 安裝Mercurial
- 3.4. 獲取代碼
- 3.5. 安裝Go
- 3.6. 編寫程序
- 3.7. 進一步學習
- 3.8. 更新go到新版本
- 3.9. 社區資源
- 3.10. 環境變量
- 4. Go語言入門
- 4.1. 簡介
- 4.2. Hello,世界
- 4.3. 分號(Semicolons)
- 4.4. 編譯
- 4.5. Echo
- 4.6. 類型簡介
- 4.7. 申請內存
- 4.8. 常量
- 4.9. I/O包
- 4.10. Rotting cats
- 4.11. Sorting
- 4.12. 打印輸出
- 4.13. 生成素數
- 4.14. Multiplexing
- 5. Effective Go
- 5.1. 簡介
- 5.2. 格式化
- 5.3. 注釋
- 5.4. 命名
- 5.5. 分號
- 5.6. 控制流
- 5.7. 函數
- 5.8. 數據
- 5.9. 初始化
- 5.10. 方法
- 5.11. 接口和其他類型
- 5.12. 內置
- 5.13. 并發
- 5.14. 錯誤處理
- 5.15. Web服務器
- 6. 如何編寫Go程序
- 6.1. 簡介
- 6.2. 社區資源
- 6.3. 新建一個包
- 6.4. 測試
- 6.5. 一個帶測試的演示包
- 7. Codelab: 編寫Web程序
- 7.1. 簡介
- 7.2. 開始
- 7.3. 數據結構
- 7.4. 使用http包
- 7.5. 基于http提供wiki頁面
- 7.6. 編輯頁面
- 7.7. template包
- 7.8. 處理不存在的頁面
- 7.9. 儲存頁面
- 7.10. 錯誤處理
- 7.11. 模板緩存
- 7.12. 驗證
- 7.13. 函數文本和閉包
- 7.14. 試試!
- 7.15. 其他任務
- 8. 針對C++程序員指南
- 8.1. 概念差異
- 8.2. 語法
- 8.3. 常量
- 8.4. Slices(切片)
- 8.5. 構造值對象
- 8.6. Interfaces(接口)
- 8.7. Goroutines
- 8.8. Channels(管道)
- 9. 內存模型
- 9.1. 簡介
- 9.2. Happens Before
- 9.3. 同步(Synchronization)
- 9.4. 錯誤的同步方式
- 10. 附錄
- 10.1. 命令行工具
- 10.2. 視頻和講座
- 10.3. Release History
- 10.4. Go Roadmap
- 10.5. 相關資源