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

news2024/12/24 10:13:52

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 doc
    go doc <pkg>
    go doc <sym>[.<methodOrField>]
    go doc [<pkg>.]<sym>[.<methodOrField>]
    go doc [<pkg>.][<sym>.]<methodOrField>
    go doc <pkg> <sym>[.<methodOrField>]
For more information run
    go help doc

Flags:
  -C dir
        change to dir before running command
  -all
        show all documentation for package
  -c    symbol matching honors case (paths not affected)
  -cmd
        show symbols with package docs even if package is a command
  -short
        one-line representation for each symbol
  -src
        show 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2124300.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

重装电脑系统时硬盘被重新分区:数据恢复实战指南与深度解析

在数字化时代的浪潮中&#xff0c;电脑作为我们日常生活和工作的核心工具&#xff0c;其系统的稳定性与数据的完整性至关重要。然而&#xff0c;在追求系统性能优化或解决系统故障的过程中&#xff0c;重装电脑系统成为了一个常见的操作。不幸的是&#xff0c;这一过程中若不慎…

PB9一个运行时错误:Non-array expected in ANY Variable

反编译修改一个项目。遇到这个问题。 仿佛一看&#xff0c;这是一个莫名其妙的问题&#xff0c;在百度也只搜到一个类似问题。 但是定睛一看&#xff0c;是一个很奇怪的错误&#xff0c;就是说代码自己写错了 for i 1 to uo_1.is_arr ls_arrstr uo_1.is_arr[i] ... next …

掌握 JavaScript ES6+:现代编程技巧与模块化实践

掌握 JavaScript ES6&#xff1a;现代编程技巧与模块化实践 一 . 变量声明 let二 . 声明常量 const三 . 模板字符串四 . 函数的参数默认值五 . 箭头函数六 . 对象初始化七 . 解构7.1 接收 JSON 对象7.2 接收数组 八 . 延展操作符九 . 导入和导出9.1 方式一9.2 方式二 这篇文章我…

校篮球联赛系统小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;管理员管理&#xff0c;公告管理&#xff0c;基础数据管理&#xff0c;球队管理&#xff0c;球员管理&#xff0c;赛事信息管理&#xff0c;用户管理&#xff0c;轮播图信息 微信端账号功能包括&#…

文章解读与仿真程序复现思路——电网技术 EI\CSCD\北大核心《面向日前市场邀约的电动自行车换电站运行规划》

本专栏栏目提供文章与程序复现思路&#xff0c;具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…

聚观早报 | 2025款比亚迪汉上市;iPhone 16天猫全球同步首发

聚观早报每日整理最值得关注的行业重点事件&#xff0c;帮助大家及时了解最新行业动态&#xff0c;每日读报&#xff0c;就读聚观365资讯简报。 整理丨Cutie 9月11日消息 2025款比亚迪汉上市 iPhone 16天猫全球同步首发 菜鸟L4级无人车正式发售 OPPO Find X8配置细节曝光…

DB33/T629 视频联网配置 USC安防平台

海康平台配置介绍 如下以海康ISC为例&#xff0c;配置DB33/T629接入流程。其中海康平台域标识为130101000020000099。DB33/T629 支持目录同步到usc。 DB33/T629服务配置 假设DB33/T629服务已经配置好&#xff0c;参考配置-》级联-》DB33/T629服务 DB33/T629下级域 进入配置-》…

全球服务业和制造业PMI:8月份差距继续扩大

标普全球综合PMI产出指数在8月份回升&#xff0c;增加0.3个百分点至52.8&#xff0c;此前两个月一直在下降。这对于2024年第三季度中的全球活动来说是一个鼓励的信号。然而&#xff0c;这个改进掩盖了服务业和制造业之间的明显分歧。8月份&#xff0c;全球服务业指数达到自2023…

8.Bug流程管理,禅道的使用(包含笔试/面试题)

一、bug的生命周期&#xff08;重点&#xff09; bug的生命周期就是从bug被发现到bug被关闭的整个过程。 1.bug生命周期&#xff1a; 新建&#xff08;提交bug&#xff09; - 指派 - 已解决 - 待验 - 关闭 new&#xff08;新建&#xff09; - assign额的&…

【Unity】为脚本添加头部注释

1 前言 默认创建的脚本头部是没有注释的&#xff0c;有时候我们想要在创建脚本时在脚本内容的最前面加上一个注释来标注脚本的相关信息&#xff0c;比如创建者、创建时间、描述等等。那么提供有两种实现方式。 2 方法 2.1 修改Unity的脚本Script 打开Unity Hub&#xff0c;找…

c/c++ 指针数组

顾名思义就是元素为指针的数组&#xff0c;如定义一个 char *类型的指针数组&#xff1a; char *strName[] {"123","456","789","abc","def" }; 如果是这样初始化的指针数组&#xff0c;c编译是会抛出警告信息的&#xff…

震惊!国产数据库厂商减少了51家!

前面文章我提到国产数据库厂商实际上大部分都不赚钱&#xff0c;我估计国产目前国产数据库厂商利润为正的&#xff0c;目前不超过5家。 而经济寒冬&#xff0c;融资困难&#xff0c;那么对于很多厂商&#xff0c;尤其是全靠融资的数据库厂商来讲&#xff0c;这将变得极其困难。…

Mysql系列-索引简介

索引是排好序的数据结构 1 索引数据结构 hash索引、二叉树、平衡二叉树、B-Tree、BTree 数据结构在线示例&#xff1a;点击跳转 2 索引类型 2.1 聚簇索引 又叫“聚集索引” &#xff0c;索引和数据存储在一起 2.2 非聚簇索引 又叫“非聚集索引” &#xff0c;索引和数据分开…

新MyEclipse(比如MyEclipse2019)自动生成PO类和配置文件的方法。

新版的MyEclipse&#xff08;比如MyEclipse2019&#xff09;上面myeclipse菜单没有了&#xff0c;选择项目右键菜单myeclipse也没有了。 新的方式是&#xff1a;右键菜单——Configure Facets...&#xff0c;然后选择Install Hibernate Facets&#xff0c;下面一步一步按提示操…

【ACM独立出版】第二届物联网与云计算技术国际学术会议 (IoTCCT 2024,9月27-29)

第二届物联网与云计算技术国际学术会议 (IoTCCT 2024)将围绕“物联网与云计算技术”领域&#xff0c;为来自国内外高等院校、科学研究所、企事业单位的专家、教授、学者、工程师等提供一个分享专业经验&#xff0c;扩大专业网络&#xff0c;面对面交流新思想以及展示研究成果的…

机械学习—零基础学习日志(Python做数据分析03)

元组 这里主要讲解了元组的相关语法内容。 可以在数据分析中使用相关的方法。 拆分元组 重点参考来源&#xff1a;

appium历史版本地址链接

appium / Appium.app / Downloads — Bitbucket ios的appium界面图 链接: https://pan.baidu.com/s/1i8BRaZgQA3ImLUhKZjfhiA 提取码: 5c8b

面向对象需求分析

1. 面向对象分析概述 1.1 面向对象基本概念 以对象为中心&#xff0c;以类为构造机制&#xff0c;来认识、理解、刻画客观世界和设计、构建相应的软件系统。 1.2 UML统一建模语言 为什么要使用UML UML基本概念 统一建模语言&#xff08;UML&#xff09;是一个支持模型化和软…

【苍穹外卖】前端 Day 1

1 Vue 1.1 通过 vue cli 脚手架创建前端工程 1.2 项目结构 1.3 启动项目 VS Code 启动前端项目&#xff1a; npm run serve 注意这里占用端口号 8080 与 java springboot 占用端口号一致&#xff0c;有冲突 serve 是这个名字 终止&#xff1a;ctrl c 修改端口号 2 vue 基本…

JVM面试真题总结(六)

文章收录在网站&#xff1a;http://hardyfish.top/ 文章收录在网站&#xff1a;http://hardyfish.top/ 文章收录在网站&#xff1a;http://hardyfish.top/ 文章收录在网站&#xff1a;http://hardyfish.top/ 解释GC的标记-整理算法及其优点 GC&#xff08;垃圾收集&#xff…