如何维护一个自己的 golang doc 服务
本文内容是如何维护一个golang 在线的doc 服务。
1 什么是godoc ?
godoc 是 golang 官方提供的文档生成工具,
2 为什么要有godoc ?
我们经常遇到一个问题,就是代码和文档不一致,线上代码版本总和wiki 给的不一样,让人吐槽。为了解决这个痛点问题,golang 给出了个官方方案,也就是,文档应该与代码一起,当更新代码的时候,文档也能够同步得到更新。对于程序员来说,代码发布后,我们文档自动同步更新,这样非常完美。这就是为什么要有 godoc。
3 怎么写godoc ?
godoc 支持 package、const、var和 func 这些类型根据注释生成文档,而且只会对公有变量(首字母大写)生成。我们可以直接通过doc 查具体函数签名,函数使用说明,还有example 示例代码。
3.1 package, type, const, func
type, const, func以名称为注释的开头, package以Package name为注释的开头, 其中有效的关键字注释不应该超过3行。
// Package AAA ... package AAA // Xyz ... const Xyz = 1 // Abc ... type Abc struct {} // Bcd ... func Bcd() {}
3.2 Bug
以BUG(who)开头的注释, 将被识别为已知bug, 显示在bugs区域
// BUG(who): 我是bug说明 // Package AAA ... package AAA
3.3 Deprecated
函数签名前加// Deprecated: xxx ,使用时,ide 一般会自动提醒。不会加到doc 中
3.4 example
test 有两种,一种是单测,一种是example, 也就是示例代码。example 的代码和注释 使用godoc 会自动加到doc 中去。example 的示例如下:
// 文件必须放在 AAA包目录下, 名字必须为example_xxx_test.go // Package AAA_test 为AAA example 示例 package banana_test // 不加函数名,是包级别示例,放最上面 func Example() { fmt.Println("Hello World") // Output: // Hello World } // 函数A将被展示在Function区域 func ExampleA() { fmt.Println("Hello A") // Output: // Hello A }
4 如果搭建自己的doc 服务
4.1 使用 godoc
godoc 本身能够 提供一个简单的httpserver 展示doc
godoc -http=:6060
使用效果如图:
通过 godoc 可以查看本机GOPATH 下所有pkg 的文档,因为是本地,反应速度很快。如果公司需要维护一个doc 服务,可以考虑定时同步或者gitlib添加钩子,将代码库代码代码到一台机器上去,在这个机器上起godoc 服务。
4.2 使用官方的 godoc.org 源码
官方有个网站,提供在线doc 查询:https://godoc.org/ 。这个网站比较好用,可以查询github 和公有库代码的doc,代码开源。 使用方式如下:
1,install redis 2,install Cloud SDK at https://cloud.google.com/sdk/docs/ ,为了search 的时候走代理 3,clone ``` git clone https://go.googlesource.com/gddo $GOPATH/src/github.com/golang/gddo ``` 4,Run the server: ``` cd $GOPATH/src/github.com/golang/gddo/gddo-server && \ go build && \ GITHUB_TOKEN=xyzzy123 ./gddo-server ``` 5, http://127.0.0.1:8080
公司自己维护自己的gitlab的话,本身也可以支持,当搜索pkg ,会去clone 到临时文件夹,然后生成doc 数据放redis 中,反应速度还是挺快的。值得注意的是,这个库本身会每天定时去源站同步代码,所有不需要像第一种一样,得异步回调或者定时同步。
最后
本文总结了使用golang 写文档的标准做法,然后给出了两种维护doc 服务的方式。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
创建型模式:工厂方法
个人博客原文 创建型模式:工厂方法 简介 姓名:工厂方法 英文名:Factory method Pattern 价值观:扩展是我的专属 个人介绍: Define an interface for creating an object,but let subclasses decide which class to instantiate.Factory Method lets a class defer instantiation to subclasses. (定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。) (来自《设计模式之禅》) 你要的故事 还记得上一篇 单例模式 中的故事么?小明开着汽车去旅游、去学校、去聚会。这一次还是延续小明的故事,一个故事能讲 2 个设计模式,不容易呀。。。(每次想故事都想破脑袋,每一篇文章至少有 3 个故事从脑子里闪过,但最终留下的只有一个适合,为了就是能比较清晰简单的说明设计模式中的关键要点。) 简单工厂 小明家里以前不算很富裕,但是还是有一个不错的车库,什么汽车、摩托车、自行车啥的都放在这个车库里。小明...
- 下一篇
普元EOS 8网关设计及应用
转载本文需注明出处:EAWorld,违者必究。 引言: 普元EOS 8 API Gateway作为一个独立模块,可以对API进行创建、发布、维护、监控等全生命周期管理。 目录: 一、为什么引入EOS8网关 二、EOS 8网关的技术框架 三、API接入和监控示例 一、为什么引入EOS8网关 随着微服务的热度不断上升,线上商业的发展和人们需求的扩增,企业中业务服务种类众多,数量巨大,对如此规模的服务做升级、管理和维护,时间和资源成本的开销不言而喻。API Gateway的价值随之彰显出来。与此同时对API Gateway的选择也尤为重要。 统一的API管理、高并发请求全周期异步化、灵活的API适配是EOS 8 API Gateway的优势。 API Gateway 在各个模块间如何运作? 上图展示了EOS 8 API Gateway模块间的进程视图,方便我们理解整个业务执行过程。 首先,需要将网关和后端应用注册到Eureka(如果后端服务不是微服务,可以忽略这一步)。 然后,在governor界面创建需要发布的API,并配置相应的ip认证和流控配置,这些操作都会同步到Gateway Ser...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
-
Docker使用Oracle官方镜像安装(12C,18C,19C)
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS8编译安装MySQL8.0.19
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
推荐阅读
最新文章
- 设置Eclipse缩进为4个空格,增强代码规范
- CentOS7,8上快速安装Gitea,搭建Git服务器
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS8编译安装MySQL8.0.19
- Red5直播服务器,属于Java语言的直播服务器
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS7设置SWAP分区,小内存服务器的救世主
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题