前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Go语言|go version命令的高级用法

Go语言|go version命令的高级用法

作者头像
飞雪无情
发布2020-08-31 10:12:02
11.1K0
发布2020-08-31 10:12:02
举报
文章被收录于专栏:飞雪无情的博客

go version这个命令相信大家已经非常熟悉了,使用它可以查看我们自己电脑上的Go SDK版本。

代码语言:javascript
复制
$ go version
go version go1.15 darwin/amd64

以上就是我们经常使用到的功能,可以查看自己的Go版本和系统架构的信息。 但是这其实是go version最基本的用法,因为我们没有为它提供更多的参数信息,所以它默认的打印的是go这个可执行文件的版本信息。

go version 用法

go这个命令工具,可以使用help子命令查看任意命令的帮助。

代码语言:javascript
复制
$ go help version
usage: go version [-m] [-v] [file ...]
Version prints the build information for Go executables.
Go version reports the Go version used to build each of the named
executable files.
If no files are named on the command line, go version prints its own
version information.

显示的帮助内容比较多,我截取一部分。从该命令的用法来看,它可以接受多个文件,用于打印这些文件的构建版本信息。现在我来通过一些例子演示该命令的高级用法。

查看任意文件

代码语言:javascript
复制
$ go version goimports
goimports: go1.13

传递goimports这个可执行文件的路径给go version命令,就可以打印出goimports这个可执行文件的构建版本信息,从结果看,我电脑里的goimports是使用go1.13版本构建的。

同样的,可以依次查看多个文件的构建版本信息。

代码语言:javascript
复制
$ go version goimports gocode
goimports: go1.13
gocode: go1.13

从结果看,这两个工具的构建版本一样,都是使用go1.13

小提示:传递给go version的文件要是绝对路径,以上示例是因为我正好在$GOBIN目录下,所以可以省略路径,直接使用文件名。

更简便的是,你还可以把一个目录传给go version,他可以打印出目录下所有可执行文件的构建信息。

代码语言:javascript
复制
$ go go version bin/
bin/basic: go1.13
bin/dlv: go1.13
bin/fillstruct: go1.13
bin/go-callvis: go1.13
bin/go-outline: go1.13
bin/go-symbols: go1.13
bin/gocode: go1.13
bin/gocode-gomod: go1.13
bin/godef: go1.13
bin/godoctor: go1.13
bin/goimports: go1.13
bin/golint: go1.14.4
bin/gomobile: go1.13
bin/gomodifytags: go1.13
bin/gopkgs: go1.13
bin/goplay: go1.13
bin/gorename: go1.13
bin/goreturns: go1.13
bin/gotests: go1.13
bin/main: go1.15
bin/protoc-gen-go: go1.13

查看go mod信息

通过go version命令可以查看一个可执行文件的go mod信息,相信不少人还不知道这一点,这可是一个核武器的功能。

代码语言:javascript
复制
$ go version -m gocode   
gocode: go1.13
	path	github.com/mdempsky/gocode
	mod	github.com/mdempsky/gocode	v0.0.0-20190203001940-7fb65232883f	h1:ee+twVCignaZjt7jpbMSLxAeTN/Nfq9W/nm91E7QO1A=
	dep	golang.org/x/tools	v0.0.0-20191018212557-ed542cd5b28a	h1:UuQ+70Pi/ZdWHuP4v457pkXeOynTdgd/4enxeIO/98k=

如上所示,只需要加一个-m标识就可以打印出go mod信息。比如gocode的,可以看出它的github地址是github.com/mdempsky/gocode,模块名也一样,并且依赖了golang.org/x/tools库,并且还显示了库的版本。

是不是非常清晰,当我们研究一个可执行文件的时候非常有用,因为你可以看到它的地址,它依赖了哪些第三方库。

不支持的文件

go version有这么好的功能,也是有限制的,它只能查看Go语言编译生成的可执行文件。这个相信从上面的示例中也可以看出来,因为显示的这些构建版本信息都是Go语言相关的,其他语言也没有这些,所以其他语言生成的文件也就无法支持。比如我以ping命令为例:

代码语言:javascript
复制
$ go version /sbin/ping
/sbin/ping: go version not found

提示找不到相关的go版本信息,这个是很正常的,因为ping不是Go编译生成的可执行文件。

小结

Go为我们提供了不少好用的工具,可能都隐藏在角落里,如果你仔细找,会有意想不到的收获。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020年8月30日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • go version 用法
  • 查看任意文件
  • 查看go mod信息
  • 不支持的文件
  • 小结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档