Go语言自开源至今已经11个年头了!截至本文发稿时,目前最新的Go版本为1.15,Go核心开发团队正紧锣密鼓的进行着Go 1.16版本的开发(现阶段主要是修复bug),该版本将在2021年2月份正式发布。

Go以“自带电池(battery included)”而为人所知,除了Go标准库的全面和强大之外,Go工具链的丰富和易用在主流编程语言中也是位列“执牛耳者”之列的,而Go文档查看工具就在Go工具链之列中。

查看文档是Gopher们日常必不可少的开发活动之一。Go语言从诞生那天起就十分重视项目文档的建设,除了在Go官方网站(https://golang.org)可以查看到最新稳定发布版(当前是Go 1.15)的文档之外,在tip.golang.org上还可以查看到项目主线分支(master)上最新开发版本(非稳定版)的文档。

那么问题来了!如果想查看Go的某个历史版本(比如:Go 1.9)的文档,我应该如何做呢?别急!在这篇文章中,我将告诉你答案。

1. 利用go doc,可行,但非最优

从Go发布1.0版本开始,Go就将整个Go项目文档加入到Go发行版中,这样开发人员在本地安装Go的同时也拥有了一份完整的Go项目文档。

除了在发行版中集成所有文档,从1.5版本开始,Go还将文档查看工具集成到其工具链当中(即go doc),使之成为Go工具链不可分割的一部分,这也再次体现了文档在Go语言中的重要性。自go doc在1.5版本加入Go工具链之后,它就和go getgo build一样成为了Gopher们每日必用的go命令,也成为了Go包文档的“百科全书”

不过利用go doc,我们只能查看当前本地的go版本的文档。如果当前本地环境的Go版本为Go 1.14,那么所有go doc输出的文档内容均来自Go 1.14版本。如果我们要查看Go 1.9版本的文档,我们需要将本地环境的Go版本“切换”到Go 1.9才可以。

“切换”的方法有很多,笔者习惯通过重新设置$GOROOT的方式在多个Go版本间切换:

$export GOROOT=~/.bin/go1.9.7
$export PATH=$GOROOT/bin:$GOPATH
$go version
go version go1.9.7 darwin/amd64
$go doc http.Request

我们看到:“切换”后再执行的go doc的输出结果均来自Go 1.9版本了。

不过这种方法比较繁琐,需要切换本地环境中的go版本,并且没法像官方站点那样通过图形化的方式查阅go文档,这显然不是最优方案,我们继续往下看。

2. 使用godoc建立历史版本的Web化文档中心

很多接触Go语言较早的gopher都知道,在go doc之前,还有一个像gofmt一样随着Go安装包一起发布的文档查看工具,它就是godoc,也就是说godoc在Go世界的存在历史比go doc还要悠久。在Go 1.5版本增加go doc工具后,godoc与go doc就一直并存在Go中。这种情况一直持续到Go 1.13版本。在Go 1.13版本中,godoc就不再和go、gofmt一起内置在Go安装包中发布了。godoc被挪到Go扩展工具链中,我们可以通过下面命令单独安装godoc:

$go get golang.org/x/tools/cmd/godoc

和命令行go doc工具不同的是,godoc实质上是一个web服务,它会在本地建立起一个web形式的Go文档中心,当我们执行下面命令时这个文档中心服务就启动了:

$godoc -http=localhost:6060

在浏览器地址栏输入http://localhost:6060,打开Go文档中心首页:


我们看到godoc将$GOROOT下面的内容以web页面的形似呈现给开发者,同时我们看到首页顶部的菜单与Go官方主页的菜单也基本如出一辙。点击“Packages”可以打开Go包参考文档页面:


Go包参考文档页面将包分为几类:标准库包(Standard library)、第三方包(Third party)和其它包(Other packages),其中的第三方包就是本地$GOPATH下面的各个包。

不过,默认情况下godoc建立的Go文档中心对应的文档版本也是本地环境当前的Go版本,即如果当前本地安装的Go版本为go 1.14,那么godoc所呈现的就是go 1.14稳定版对应的文档。那么如果我想查看一下旧版本的文档,比如Go 1.9.7版本的文档,我该如何做呢?首先我们需要下载go 1.9.7版本的安装包(因为正如前面所说的,go文档是随着安装包一起发布的),将其解压到本地目录下,比如是/Users/tonybai/.bin/go1.9.7,接下来我们执行如下命令:

$godoc -goroot /Users/tonybai/.bin/go1.9.7 -http=localhost:6060

我们用-goroot命令行选项显式告诉godoc从哪个路径加载Go文档数据,这样godoc建立的文档中心中的文档版本就是Go 1.9.7的了。

我们看到,通过godoc,我们不仅无需切换本地环境中的go版本,我们还建立起了像golang.org那样的图形化的历史go版本的文档中心。这也是截至目前为止查看Go历史版本版本文档的最佳方法了!

更多关于常用Go工具链的高级用法的内容请参看我在慕课网上出品的Go进阶技术专栏《改善Go语言编程质量的50个有效实践》。本专栏主要满足广大gopher关于Go语言进阶的需求,围绕如何写出地道且高质量Go代码给出50条有效实践建议,上线后收到一致好评!欢迎大家订阅!



**“Gopher部落”知识星球开球了!**高品质首发Go技术文章,“三天”首发阅读权,每年两期Go语言发展现状分析,每天提前1小时阅读到新鲜的Gopher日报,网课、技术专栏、图书内容前瞻,六小时内必答保证等满足你关于Go语言生态的所有需求!星球首开,福利自然是少不了的!2020年年底之前,8.8折(很吉利吧^_^)加入星球,下方图片扫起来吧!

我的网课“Kubernetes实战:高可用集群搭建、配置、运维与应用”在慕课网热卖中,欢迎小伙伴们订阅学习!

Gopher Daily(Gopher每日新闻)归档仓库 - https://github.com/bigwhite/gopherdaily

我的联系方式:

  • 微博:https://weibo.com/bigwhite20xx

  • 微信公众号:iamtonybai

  • 博客:tonybai.com

  • github: https://github.com/bigwhite

  • “Gopher部落”知识星球:https://public.zsxq.com/groups/51284458844544

如何查看历史版本的Go文档?嘘!答案我只告诉你!相关推荐

  1. 版本控制系统GIT文档

    版本控制系统GIT文档 李达 20180629 引用博客教程+实践总结 目录 1.     版本控制系统... 2 1.1.      简介... 2 1.2.      常见的版本控制器... 3 ...

  2. ExtJS各个版本官方API文档

    ExtJS各个版本官方API文档 官方API地址:https://docs.sencha.com/extjs/6.7.0/index.html 版本切换方式: 官方文档为纯英文文档,需要中文版的朋友可 ...

  3. 哪里查看计算机最近打开的文档,W7电脑系统中如何查看最近打开过的文档项目...

    w7电脑系统中如何查看最近打开过的文档项目?w7电脑系统中有一项便捷功能,就是可以记录最近打开过的文件,不过这一功能不是默认打开的,需要我们对电脑电脑系统进行设置.下面,小编就为大家介绍下w7电脑系统 ...

  4. git切换到旧版本_git查看历史版本

    git查看历史版本以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 一.git 获取历史版本的几种方式 我们简单的描述一个 ...

  5. 手机如何查看电脑上的html,如何在电脑上查看手机wps内的文档

    大家好,我是时间财富网智能客服时间君,上述问题将由我为大家进行解答. 在电脑上查看手机wps内的文档方法如下: 1.在你的手机wps上找到"我的office",点击上面的" ...

  6. 如何查看jsplumb.js的API文档(YUIdoc的基本使用)#华为云·寻找黑马程序员#

    [摘要] 介绍前端文档工具YUIdoc 示例代码托管在:http://www.github.com/dashnowords/blogs 一.问题描述 最近向一些同事推荐了网页中实现流程图绘制的工具库j ...

  7. 微信开发从入门到精通教程大全 资料大全 java和php版本;教程文档、代码、视频 微信商城实例

    一.官网 微信公众服务号申请.认证(开通支付)-微信开发图文教程 http://blog.csdn.net/wyx100/article/details/46944863 1.1 账号申请 https ...

  8. 如何对多个版本的Word文档对比,查找变动删减的内容

    重要的方案.报价.合同类的文档,可能会编辑多个版本,那要如何才能了解两个文档版本的差异,总不能同时打开了,一个个对着看吧.那怎么办?这时候,我们可以利用Word强大的"文档比较"功 ...

  9. Unity各个版本的离线文档下载和配置方法

    Unity各版本离线文档的下载链接: Unity2020.2版本的英文离线文档 Unity2020.1版本的中文离线文档 Unity2019.4版本的中文离线文档 Unity2019.3版本的中文离线 ...

最新文章

  1. python连接redis有中文_Python连接Redis并操作
  2. 2.Riesz定理及其应用
  3. 学习笔记Hadoop(十二)—— Hadoop基础操作(4)—— YARN资源管理与调度策略
  4. luogu2024 食物链
  5. 每天一道LeetCode----位运算实现加减乘除四则运算
  6. docker $PWD路径_Docker安装Jenkins+Shell脚本自动化部署项目
  7. bind简单转发实验
  8. 循环神经网络——裁剪梯度(应对梯度爆炸)
  9. 【渝粤教育】广东开放大学 机械制造基础 形成性考核 (54)
  10. com.google.zxing 二维码生成与解析
  11. Android中实现全屏、无标题栏的两种办法(另附Android系统自带样式的解释)
  12. 推荐支持 azw3 、epub 和 mobi 格式的阅读器:FBReader
  13. JAVA 文件分割工具类
  14. 计算机启动后只有鼠标桌面黑屏,电脑开机黑屏只有鼠标的解决方法
  15. SpringCloud之Eureka客户端服务启动报Cannot execute request on any known server解决
  16. 到底是上班舒服还是上学舒服!上班一个月的感受!
  17. RAID 0 1 5 10特点以及工作原理
  18. windows自带应用变成灰色解决方案
  19. 腾讯拿下基金销售牌照:微信、蚂蚁、东方财富上演“三国杀”
  20. Bayesian facerevisited : a joint formulation 学习笔记

热门文章

  1. 有限个无穷小的和也是无穷小
  2. f-28 The entry XX is missing in table T043G
  3. 通信电子电路(二十一) 第二章 知识点总结+作业分析
  4. Obsidian的一些插件
  5. MD5加密与用户名密码批量加密方法
  6. 【陈工笔记】# 微信小程序,初始平台搭建 #
  7. 回溯法—子集树与排列树
  8. 带你深入了解Java!十七、超市会员管理系统!
  9. 基于单片机的农业大棚
  10. python通过什么对象连接数据库_「Python」连接数据库的三种方式