罕见的 Go CLI 命令 (5/5):查看文档与依赖

不敢说文档是代码的灵魂,但也至少可以算是发肤。本文主要看一下如何使用 Go 提供的 CLI 命令查看项目文档以及检查依赖关系。

1. 查看文档

一般我们习惯打开 pkg.go.dev 查看文档,但其实 Go 也提供了 go doc 命令在终端查看文档。可以使用以下格式:

bash 复制代码
go doc <pkg>
go doc <sym>[.<methodOrField>]
go doc [<pkg>.]<sym>[.<methodOrField>]
go doc [<pkg>.][<sym>.]<methodOrField>

以上来自 go help doc 命令的说明。

go doc 不仅支持查找标准库文档,也支持自定义包。可以通过 . 连接包名、结构体或接口以访问其字段或方法,以 gin 为例:

bash 复制代码
# 准备
git clone git@github.com:gin-gonic/gin.git && cd gin

# 查看当前项目文档
go doc
# 输出的第一行为:package gin // import "github.com/gin-gonic/gin"
# 来自 Gin 目录内的 doc.go 文件,对于大型项目,这是一个约定

如果第三方包中包含的 func 或 type 和标准库中的没有冲突,那么可以直接使用 go doc <func/type/struct> 命令:

bash 复制代码
go doc Param # 查看 Gin 的 Param type

单如果和标准库有冲突,需要添加路径,一般来说为避免歧义,在第三方包使用 go doc 命令时建议总是包含路径:

bash 复制代码
go doc Context # 来自标准库的 Context
go doc . Context # 来自 Gin 的 Context

# 支持点号访问子集
go doc . Context.Param

Go 官方对文档有一个比较详细的介绍 Go Doc Comments,另外提供了 pkg.go.dev/go/doc 包供相关使用。

2. 查看依赖

go list 是 Go CLI 工具集中的一个命令,可以获取有关包的各种信息,如导入路径、目录位置、依赖关系等。基本用法如下:

bash 复制代码
go list [flags] [packages]

其中,[flags] 是一些选项,[packages] 是要列出信息的包的导入路径。通过不同的选项,可以获取不同格式的输出信息,如 JSON 格式、指定字段等。

常见用法包括:

bash 复制代码
# 同样以 Gin 为例
git clone git@github.com:gin-gonic/gin.git && cd gin

# 展示当前 package path,多用于工具或自动化脚本的命令
go list

# 查看包的所有依赖
go list -deps

# 查看所有依赖的包名,使用 Go 的模版语法
go list -deps -f {{.Name}}

go list 命令默认是 package 模式,可以切换到 module 模式:

bash 复制代码
go list -m

# 查看主 module 及其所有依赖的导入路径
go list -m all

# 查看依赖的版本
go list -m -versions github.com/golang/protobuf

通过 go help list 命令可以查看更多关于 go list 的详细信息和用法说明。go list 在 Go 开发中还是比较有用的,可以帮助我们更好地管理和了解项目中的包信息。

有时候我们为了一个并不太复杂的功能而想要轻易引入一个包的时候,可以看一下这个包又依赖了多少别的包,有没有风险,值不值得这样做。

总结

之前在使用 Go 的过程中,常用的也就是 buildruntest 以及 get 等基本命令,本系列文章通过对 Go 提供的 CLI 命令从构建、插件、运行时、项目管理、文档五个方面进行了全面的总结,虽然稍微流于表面,并未深入,但重在入门。

每一门语言都有其独到之处,也有无尽的精彩等待探索。

相关推荐
计算机毕设指导62 分钟前
基于 SpringBoot 的作业管理系统【附源码】
java·vue.js·spring boot·后端·mysql·spring·intellij-idea
paopaokaka_luck19 分钟前
[371]基于springboot的高校实习管理系统
java·spring boot·后端
捂月1 小时前
Spring Boot 深度解析:快速构建高效、现代化的 Web 应用程序
前端·spring boot·后端
煎鱼eddycjy2 小时前
新提案:由迭代器启发的 Go 错误函数处理
go
煎鱼eddycjy2 小时前
Go 语言十五周年!权力交接、回顾与展望
go
瓜牛_gn2 小时前
依赖注入注解
java·后端·spring
Estar.Lee2 小时前
时间操作[取当前北京时间]免费API接口教程
android·网络·后端·网络协议·tcp/ip
喜欢猪猪2 小时前
Django:从入门到精通
后端·python·django
一个小坑货2 小时前
Cargo Rust 的包管理器
开发语言·后端·rust
bluebonnet272 小时前
【Rust练习】22.HashMap
开发语言·后端·rust