go的文档
背景
go作为一个非常现代的语言,官方提供文档功能,
能够以CLI或是html的方式,
将代码中的注释或代码提取出来,当作文档使用.
简介
相关工具分别有
go doc
,负责在命令行的显示godoc
,主要负责网页端的显示
这些工具是如何提取和组织内容的,是否引入了特别的规定等等,是这个笔记的关注点
go doc
是自带在go编译器上的工具.
大致用法
1 | go doc [-u] [-c] [package|[package.]symbol[.methodOrField]] |
- 其中u,c等是选项.注意选项如果放在其他内容后方可能会出问题.
- 所谓symbol是指变量,常量,函数,结构体,接口等等
- 默认不显示main包的内容
具体用法还要看go的官方指导
1 | go help doc |
一些选项及其用途
- all,显示所有文档(默认不显示关于函数的注释,加上all可以显示)
- c,大小写敏感
- cmd,将main包视为常规包
- src 显示完整源代码
- u,显示不向包外暴露的symbol
使用举例
1 | go doc sync.WaitGroup.Add # 显示定义在sync.WaitGroup上的Add方法 |
godoc
在1.12版本后从go编译器中分离,需要手动安装
1 | go get -u -v golang.org/x/tools/cmd/godoc |
需要将 $GOPATH/bin
加入 $PATH
通常使用起来比较简单
1 | godoc -http=:6060 |
这样能够在 localhost:6060
建立一个web服务器,可供查看注释.
打开后能够看到一个树状结构
- TOC
- 标准库
- 库的列表(然后一math/rand举例)
- TOC
- Overview
- 大致的介绍
- 库级别的example
- Index
- 函数和类的列表
- 函数级别example的列表
- 源码文件的列表
- Examples,完全是上面2.2的快捷方式
- 库的列表(然后一math/rand举例)
- 第三方库
- 在本地计算机写的包也能出现在这里
- 其他
信息来源
go doc
和 godoc
公用同样的消息来源和规则.
符号上方的注释被作为普通文档
符号(函数,结构体,接口等等)上方的注释,会被godoc渲染到非代码框的部分.
一些右侧的(比如结构体对于每个字段的解释)或不合法的(Example函数中没能写出Output关键字),
会被godoc渲染在代码框中.
*_test.go
文件中行如 ExampleXxx
的函数,会被显示为用例
用例函数中以Output为关键词开头的部分,会被渲染出新的Output框中
注释语法的处理
- 块注释和行注释都能被提取
- 注释和注释间用空行断开,表示不要继续提取,块注释被视为不断开的注释
- 多行的注释会被渲染为一行文本
- 如果想让文本换行,可以使用一个或多个连续的空白注释
- 用例中必须使用Output关键词开头才能渲染出Output框,如果不使用,会和Example代发放在一个框里
- Output关键词同一行的其他内容,会被放在Output代码框中
- Output关键词所在行必须和后续内容紧邻,不可有空行
- Output关键词和后续内容之间的空白注释,会被忽略
自定义包文档
size/calc.go
1 | // 不想让外部看到,有空行就会断开摘取 |
size/calc_test.go
1 | package size |