以下内容来自腾讯后台研发工程师andru

刚入门 Go 开发时,在开源项目的主页上我们经常可以看到这样的一个徽章:

https://pkg.go.dev/pkg.go.dev
pkg.go.devGoDocpkg.go.dev
godoc

什么是 GoDoc

godoc
https://godoc.orggodoc.orgpkg.go.devpkg.go.devgodocgodocpkg.go.devpkgsitepkgsiteGoDoc

目前的 godoc 和 pkgsite 有两个作用,一个是用来本地调试自己的 GoDoc 显示效果;另一个是在无法科学上网的时候,用来本地搭建 GoDoc 服务器之用。

godoc 命令

godoc

godc 命令有多种模式和参数,这里我们列出最常用和最简便的模式:

github.com/Andrew-M-C/go.jsonvaluehttp://${IP}:${PORT}/pkg/github.com/Andrew-M-C/go.jsonvalue/

pkgsite 命令

pkg.go.devpkgsite
pkgsitepkgsite

然后和 godoc 类似:

jsonvaluepkg/http://${IP}:${PORT}/github.com/Andrew-M-C/go.jsonvalue/

pkg.go.dev 内容

总体内容

pkg.go.dev
module
pkgsite

Documentation

让我们点开 Documentation,一个完整的 package,可能包含以下这些内容:

pkg.go.devgodocpkgsite

下面我们具体来说明一下 GoDoc 的语法。

GoDoc 语法

pkg.go.dev
///* ... *///command//* */

绑定 GoDoc 与指定类型

对于任意一个可导出内容,紧跟着代码定义上方一行的注释,都会被视为该内容的 GoDoc,从而被提取出来。比如说:

pkgsite
SomeTypeA// SomeTypeA

换行(段落)

pkgsite

实际上,在注释中如果只是单纯的一个换行另写注释的话,在页面是不会将其当作新的一段来看待的,GoDoc 的逻辑,也仅仅渲染完这一行之后,再加一个空格,然后继续渲染下一行。

如果要在同一个注释块中新加一个段落,那么我们需要插入一行空注释,如下:

内嵌代码

如果有需要的话,我们可以在注释中内嵌一小段代码,代码会被独立为一个段落,并且使用等宽字符展示。比如下面的一个例子:

总结一下:在注释块中,如果部分注释行符合以下标准之一,则视为代码块:

\t

普通注释和代码块之间可以不用专门的空注释行,但个人建议还是加上比较好。

Overview 部分

package xxx// Package xxx

如果在一个 package 中,有多个文件都包含了包注释,那么 GoDoc 会按照文件的字典序,依次展示这些文件中的包注释。但这样可能会带来混乱,因此一个 package 我们应当只在一个文件中写包注释。

一般而言,我们可以选择以下的文件写包注释:

弃用代码声明

vX.Y.ZDeprecated:
pkgsite

此外,在正文中,也会刻意用灰色字体低调展示,并且隐藏注释正文,需要点开才能显示:

代码示例文档

At()

那么,文档中的代码示例又应该如何写呢?

package包名_test
go test

示例代码的声明

At()

这个函数命名有几个部分:

// Output:
Opt

甚至连示例说明都没有。

godocAt()

在官网上发布 GoDoc

好了,当你写好了自己的 GoDoc 之后,总不是自己看自己自娱自乐吧,总归是要发布出来给大家看的。

https://pkg.go.dev/${package路径名}jsonvaluegithub.com/Andrew-M-C/go.jsonvaluehttps://pkg.go.dev/github.com/Andrew-M-C/go.jsonvalue
pkg.go.devpkg.go.dev
GoDocpkg.go.dev
htmlmarkdown

参考资料


欢迎点赞分享,关注@鹅厂架构师,一起探索更多业界领先产品技术。