godoc 命令和 golang 代码文档管理

待兔
• 阅读 1672

介绍

  • godoc 是 golang 自带的文档查看器,更多的提供部署服务
  • go doc 和 godoc 在 golang 1.13 被移除了,可以自行安装 golang.org go1.13 godoc
go get golang.org/x/tools/cmd/godoc
# 使用代理安装
GOPROXY=https://mirrors.aliyun.com/goproxy/ GO111MODULE=on go get golang.org/x/tools/cmd/godoc
godoc 
  • godoc 基础使用
# 查看包内的文档,这里是查看 fmt 包中 Printf Println 的的文档
godoc fmt Printf Println
# 查看文档并包含源码
godoc -src fmt Printf
# 查看的同时显示示例代码
godoc -ex fmt Printf
# 显示文档的web版本 http -> 端口
godoc -http=:6060
# 显示 http 文档并开启本地索引
godoc -http=:6060 -index 

要使用-index标记开启搜索索引,这个索引会在服务器启动时创建并维护。

否则无论在Web页面还是命令行终端中提交查询都会返回错误"Search index disabled: no results available"

如果不想提供如此多的结果条目,可以设置小一些的值

甚至,如果不想提供全文本搜索结果,可以将标记 -maxresults 的值设置为0,这样服务器就只会创建标识符索引,而根本不会创建全文本搜索索引
标识符索引即为对程序实体(变量、常量、函数、结构体和接口)名称的索引

  • go doc 这个是golang语言自带的文档查看工具
# 文档工具使用说明
go help doc
# 查看当前包的文档索引
go doc
# 查看目标包的文档索引
go doc [targetPackage]
# 查看目标包的某内容的文档索引
go doc [targetPackage].[函数名]
# 或者空格隔开也显示某内容的文档
go doc [targetPackage] [函数名]
# 子包的文档注释
go doc [targetPackage]/[subpackage] 

golang发布查询代码注释文档

发布文档

godoc -http=:9090 -index 

这样就在本机使用 http://127.0.0.1:9090/pkg/ 查看发布的包
当然你可以使用 http://127.0.0.1:9090/pkg/github.com/github.com/sinlov/XXXServer/userbiz/ 来查询自己代码 包 github.com/sinlov/XXXServer/userbiz 下面的文档

查询发布文档

通过 godoc -q 命令查询发布文档服务,一般用于在另一个命令行终端甚至另一台能够与本机联通的计算机中通过如下命令进行查询

# 在本机用godoc命令启动了Go文档Web服务器,且IP地址为192.168.2.201、端口为9090
godoc -q -server="192.168.2.201:9090" Listener 
  • 标记 -q 开启了远程查询的功能
  • 标记 -server="192.168.2.201:9090" 则指明了远程文档服务器的IP地址和端口号

如果不指明远程查询服务器的地址,那么该命令会自行将地址 :6060golang.org 作为远程查询服务器的地址

这个地址 golang.org:6060 即是默认的本机文档Web站点地址和官方的文档Web站点地址

golang 代码文档管理

代码文档编写

其实只要按 go 的标准注释写法编写,就可以显示代码文档了

比如 定义在 github.com/sinlov/XXXServer/userbiz 种有个文件 biz.go

// Biz implements a business
type Biz struct {
}

// business initialization
func (b *Biz) Init() {
} 

注意 // 后面跟空格,才开始解析文档

如果需要展示代码需要 //后紧跟 [[:tab]] tab,那么 go doc 就会把这行当做代码来看
可惜的是,go没法自行在注释里面添加使用链接,而是解析器跟踪使用来生成链接

查看这个代码的文档命令就是 godoc github.com/sinlov/XXXServer/userbiz
查看某个函数的文档,比如 Init 函数 就是 godoc github.com/sinlov/XXXServer/userbiz Init

代码文档导出

就使用上面文章中提到的 godoc -q -server= 指令,直接部署在服务器中就行

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
4个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Stella981 Stella981
3年前
KVM调整cpu和内存
一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
10个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这