- 前言
- Go 与操作系统
- Go 内部机制
- Go 基本数据类型
- 4 组合类型的使用
- 5 数据结构
- 6 Go package 中不为人知的知识
- 7 反射和接口
- 8 Go UNIX 系统编程
- 08.1 关于 UNIX 进程
- 08.2 flag 包
- 8.2 flag 包
- 08.3 io.Reader 和 io.Writer 接口
- 08.4 bufio 包
- 08.5 读取文本文件
- 08.6 从文件中读取所需的数据量
- 08.7 为什么我们使用二进制格式
- 08.8 读取 CSV 文件
- 08.9 写入文件
- 08.10 从磁盘加载和保存数据
- 08.11 再看strings包
- 08.12 关于bytes包
- 08.13 文件权限
- 08.14 处理 Unix 信号
- 08.15 Unix 管道编程
- 08.16 遍历目录树
- 08.17 使用 ePBF
- 08.18 关于 syscall.PtraceRegs
- 08.19 跟踪系统调用
- 08.20 User ID 和 group ID
- 08.21 其他资源
- 08.22 练习
- 08.23 总结
- 9 并发 Goroutines、Channel 和 Pipeline
- 10 Go 并发-进阶讨论
- 11 代码测试、优化及分析
- 12 Go 网络编程基础
- 13 网络编程 - 构建服务器与客户端
11.13 生成文档
Go 提供了 godoc
工具,允许您浏览您的包文档——前提是您的文件里包含一些额外信息。
我一般建议您应该尝试把所有的都文档化,除了一些比较明显的。简而言之,不要写:这我创建了一个新的
int
变量。最好表明int
变量的作用!然而,真正优秀的代码通常不需要文档!
在 Go 中写文档的规则相当简单,直接。为了文档化,您需要在声明前写一行或多行以 //
开头的常规注释。这个规定可用于文档化函数,变量,常量,乃至其他包!
另外,您会注意到任何大小包的文档的第一行会出现在 godoc
的包列表中,如 https://golang.org/pkg
一样。这意味着它是应该是很有描述性和完整性。
注意,以 BUG(something)
开头第注释会出现在包文档的 Bugs
部分。如果您正寻找这样的例子,您可以看一下 bytes
包的源码和文档页面,它们分别在 https://golang.org/src/bytes/bytes.go 和 https://golang.org/pkg/bytes/。
最后,所有和顶级声明无关的注释都将从 godoc
实用程序生成的输出中省略。
看一下下面保存在 documentMe.go
中的代码:
// This package is for showcasing the documentation capabilities of Go
// It is a naive package!
package documentMe
// Pie is a global variable
// This is a silly comment!
const Pie = 3.1415912
// The S1() function finds the length of a string
// It iterates over the string using range
func S1(s string) int {
if s == "" {
return 0
}
n := 0
for range s {
n ++
}
return n
}
// The F1() function returns the double value of its input integer
// A better function name would have been Double()!
func F1(n int) int {
return 2 * n
}
根据上一节讨论的,我们需要创建一个 documentMe_test.go
文件来为它开发示例函数。documentMe_test.go
的内容如下:
package documentMe
import (
"fmt"
)
func ExampleS1() {
fmt.Println(S1("123456789"))
fmt.Println(S1(""))
// Output:
// 9
// 0
}
func ExampleF1() {
fmt.Println(F1(10))
fmt.Println(F1(2))
// Output:
// 1
// 55
}
为了能够看到 documentMe.go
的文档, 您需要在本机安装这个包,如您在第6章(Go package中不为人知的知识)。这需要在 Unix shell 里执行如下命令:
接下来,您应该如下执行 godoc
工具:
$godoc -http=":8080"
注意,您可以使用任何没被其他进程占用的端口号。如被占用,您将看到类似下面的错误:
$godoc -http=":22"
2018/03/06 21:03:05 ListenAndServe :22: listen tcp :22: bind: permission denied
注意这点后,您将能够使用您喜欢的 web 浏览器来浏览刚被创建的 HTML 文档。这个文档的 URL 是 http://localhost:8080/pkg/
。
下面的截屏显示了我们刚启动的 godoc
服务的根目录。您能看到您创建的 documentMe.go
包在其他 Go 包中。
下面的截屏显示了在 documentMe.go
源文件中实现的 documentMe
包的文档的根目录:
同样,下面的截屏更详细的显示了 documentMe.go
包中 S1()
函数的文档,还包含示例代码。这里的示例代码不是动态的,但您能看到源码和它的输出:
执行 go test
命令将产生如下输出,它可能发现我们代码中的潜在问题和错误:
$go test -v documentMe*
=== RUN ExampleS1
--- PASS: ExampleS1 (0.00s)
=== RUN ExampleF1
--- FAIL: ExampleF1 (0.00s)
got:
20
4
want:
1
55
FAIL
FAIL command-line-arguments 0.005s
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论