当前位置: 首页 > news >正文

重拾精髓:go doc -http让离线包文档浏览更便捷

Go语言团队近期接受了Go团队成员、Go圣经《The Go Programming Language[1]》合著者Alan Donovan[2]的新提案[3],旨在进一步提升开发者体验。这个提案为go doc命令[4]的离线文档展示形式,同时增强了查看本地文档的交叉引用功能。看到这个提案功能,屏幕前的资深Gopher是不是感觉似曾相识呢:)。

早在去年,我就写过一篇有关go包文档查看方式对比的文章《聊聊godoc、go doc与pkgsite》,在那篇文章中,我就对当前Go包文档查看的几种方式做了详细说明,如果你是Go初学者,不妨点击链接移步过去仔细阅读一番。当然,这里也会简单地再介绍一下Go包文档离线查看工具的演进。

Go语言的包文档查看工具经历了三个重要阶段的演进,分别是godocgo docpkgsite。以下是这些工具的发展历程:

godoc是Go语言最早用于查看包文档的工具。它支持通过命令行查看文档,也可以通过-http参数启动一个本地文档服务器,用户在浏览器中以网页形式查看文档。这个工具提供了较为完整的Go包文档浏览体验,支持交叉引用和导航。但随着Go的发展,逐渐不再是官方推荐的工具,并且不再随Go安装包一并发布了!

随着Go的升级与演进,go doc逐渐取代了godoc成为查看包文档的主要工具。go doc主要提供了通过命令行输出包详细文档的能力,对应简单的包查询,这种方式更为高效:

$go doc -h
Usage of [go] doc:go docgo doc <pkg>go doc <sym>[.<methodOrField>]go doc [<pkg>.]<sym>[.<methodOrField>]go doc [<pkg>.][<sym>.]<methodOrField>go doc <pkg> <sym>[.<methodOrField>]
For more information rungo help docFlags:-C dirchange to dir before running command-allshow all documentation for package-c    symbol matching honors case (paths not affected)-cmdshow symbols with package docs even if package is a command-shortone-line representation for each symbol-srcshow source code for symbol-u    show unexported symbols as well as exported

然而从上面的usage输出来看,go doc版本去除了godoc堪称精髓能力的-http支持,开发者无法像godoc那样启动本地文档服务器,这在某种程度上减少了它的可视化文档浏览功能。

pkgsite是目前官方推荐的在线Go包文档浏览工具,提供了一个全面、易于导航的网站(pkg.go.dev[5]),用户可以在浏览器中查看各个Go包的文档、函数、类型等信息。它大大提升了开发者的体验,提供了丰富的交叉引用和包依赖信息。

ac6ef8ab4e3f92b5eede77b634314f0c.png

但pkgsite也是go官方站,主要用于在线查看,虽然也支持离线查看功能。但就像Alan Donovan在issue提到的那样:pkgsite程序目前相当大且启动缓慢,并且pkgsite最初被设计为一个可以在Google Cloud上运行的长生命周期的服务器,有很多外部依赖和耦合。

为了满足诸多Gopher通过浏览器web方式离线浏览Go包参考手册的需求,弥补pkgsite过于缓慢和庞大的不足,Alan Donovan提出了让离线文档服务能力回归的issue。没错!这个提案其实就是godoc -http这个经典的、精髓功能的“重生”。

这一新增功能有望在Go 1.24或之后的版本中正式推出,届时,新增的go doc -http功能会让离线文档服务的能力回归,为开发者提供了更多选择与灵活性。但目前go doc -http的具体命令接口形式尚未确定,但可以确定的是,通过该命令,用户无需再依赖第三方工具或访问外部网站,即可在本地查看项目的完整文档。这不仅提升了效率,也让开发者更方便地查找包文档以及包间的交叉引用,实现更直观的包依赖管理。Go开发者们可以尽情享受这一强大的本地文档浏览工具。


往期推荐

  • 聊聊godoc、go doc与pkgsite

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

  • Go 1.23中的自定义迭代器和iter包

  • Gopher的Rust第一课:Rust那些事儿

  • 使用TLA+形式化验证Go并发程序


Gopher部落知识星球[6]在2024年将继续致力于打造一个高品质的Go语言学习和交流平台。我们将继续提供优质的Go技术文章首发和阅读体验。同时,我们也会加强代码质量和最佳实践的分享,包括如何编写简洁、可读、可测试的Go代码。此外,我们还会加强星友之间的交流和互动。欢迎大家踊跃提问,分享心得,讨论技术。我会在第一时间进行解答和交流。我衷心希望Gopher部落可以成为大家学习、进步、交流的港湾。让我相聚在Gopher部落,享受coding的快乐! 欢迎大家踊跃加入!

85bef903c48efb978fc92b2e5dff738e.jpegf451c8cdb31a092c033c756408caa505.png

29038794b74ea45928c6859e683d0309.png8c0e2dcd293c6fcba90b9dbbd40dbeb7.jpeg

著名云主机服务厂商DigitalOcean发布最新的主机计划,入门级Droplet配置升级为:1 core CPU、1G内存、25G高速SSD,价格5$/月。有使用DigitalOcean需求的朋友,可以打开这个链接地址[7]:https://m.do.co/c/bff6eed92687 开启你的DO主机之路。

Gopher Daily(Gopher每日新闻) - https://gopherdaily.tonybai.com

我的联系方式:

  • 微博(暂不可用):https://weibo.com/bigwhite20xx

  • 微博2:https://weibo.com/u/6484441286

  • 博客:tonybai.com

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

  • Gopher Daily归档 - https://github.com/bigwhite/gopherdaily

  • Gopher Daily Feed订阅 - https://gopherdaily.tonybai.com/feed

5353cfa9565f2e46599d2a68057c07b3.jpeg

商务合作方式:撰稿、出书、培训、在线课程、合伙创业、咨询、广告合作。

参考资料

[1] 

The Go Programming Language: http://www.gopl.io/

[2] 

Alan Donovan: https://github.com/adonovan

[3] 

新提案: https://github.com/golang/go/issues/68106

[4] 

go doc命令: https://mp.weixin.qq.com/s/ypK-2wGHGj9_n4o8y-clXg

[5] 

pkg.go.dev: https://pkg.go.dev

[6] 

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

[7] 

链接地址: https://m.do.co/c/bff6eed92687

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • C语言操作符详解(13)
  • 大二上学期计划安排
  • OpenCV结构分析与形状描述符(18)比较两个轮廓相似度的函数matchShapes()的使用
  • 数据结构应用实例(二)——K均值聚类
  • 小型洗衣机什么牌子好又便宜?五款备受好评机型测评,闭眼入
  • 小米红米系列机型 机型代码查询总目录 adb指令查询步骤
  • vs2019成功连接数据库mysql
  • 深度学习算法在图算法中的应用(图卷积网络GCN和图自编码器GAE)
  • lxml官方入门教程(The lxml.etree Tutorial)翻译
  • 微波无源器件 4 基于高阶定向耦合器的双极化波束形成网络
  • MySQL系列—10.Innodb行格式
  • Google Test(gtest)中 Mocks
  • Redis重要知识点:哨兵是什么?哨兵如何选择Redis主服务器
  • Java-idea小锤子图标
  • Excel数据清洗工具:提高数据处理效率的利器
  • Fundebug计费标准解释:事件数是如何定义的?
  • Invalidate和postInvalidate的区别
  • Java 11 发布计划来了,已确定 3个 新特性!!
  • Spring Security中异常上抛机制及对于转型处理的一些感悟
  • XML已死 ?
  • - 概述 - 《设计模式(极简c++版)》
  • 讲清楚之javascript作用域
  • 如何实现 font-size 的响应式
  • 项目实战-Api的解决方案
  • 学习使用ExpressJS 4.0中的新Router
  • 职业生涯 一个六年开发经验的女程序员的心声。
  • mysql 慢查询分析工具:pt-query-digest 在mac 上的安装使用 ...
  • ![CDATA[ ]] 是什么东东
  • # linux 中使用 visudo 命令,怎么保存退出?
  • #LLM入门|Prompt#2.3_对查询任务进行分类|意图分析_Classification
  • #NOIP 2014# day.1 T2 联合权值
  • $var=htmlencode(“‘);alert(‘2“); 的个人理解
  • (java版)排序算法----【冒泡,选择,插入,希尔,快速排序,归并排序,基数排序】超详细~~
  • (LeetCode 49)Anagrams
  • (vue)el-tabs选中最后一项后更新数据后无法展开
  • (二)换源+apt-get基础配置+搜狗拼音
  • (二刷)代码随想录第16天|104.二叉树的最大深度 559.n叉树的最大深度● 111.二叉树的最小深度● 222.完全二叉树的节点个数
  • (七)Appdesigner-初步入门及常用组件的使用方法说明
  • (四)汇编语言——简单程序
  • (一)SvelteKit教程:hello world
  • (一)硬件制作--从零开始自制linux掌上电脑(F1C200S) <嵌入式项目>
  • (译)2019年前端性能优化清单 — 下篇
  • (转)IIS6 ASP 0251超过响应缓冲区限制错误的解决方法
  • (转)可以带来幸福的一本书
  • (转载)微软数据挖掘算法:Microsoft 时序算法(5)
  • (转载)在C#用WM_COPYDATA消息来实现两个进程之间传递数据
  • *1 计算机基础和操作系统基础及几大协议
  • .Net Core和.Net Standard直观理解
  • .net6Api后台+uniapp导出Excel
  • //解决validator验证插件多个name相同只验证第一的问题
  • @SentinelResource详解
  • @vue-office/excel 解决移动端预览excel文件触发软键盘
  • [ C++ ] STL---stack与queue
  • [ 隧道技术 ] 反弹shell的集中常见方式(二)bash反弹shell
  • [1181]linux两台服务器之间传输文件和文件夹