Go语言|go version命令的高级用法
go version这个命令相信大家已经非常熟悉了,使用它可以查看我们自己电脑上的Go SDK版本。
|
|
以上就是我们经常使用到的功能,可以查看自己的Go版本和系统架构的信息。
但是这其实是go version最基本的用法,因为我们没有为它提供更多的参数信息,所以它默认的打印的是go
这个可执行文件的版本信息。
go version 用法
go
这个命令工具,可以使用help
子命令查看任意命令的帮助。
|
|
显示的帮助内容比较多,我截取一部分。从该命令的用法来看,它可以接受多个文件,用于打印这些文件的构建版本信息。现在我来通过一些例子演示该命令的高级用法。
查看任意文件
|
|
传递goimports
这个可执行文件的路径给go version
命令,就可以打印出goimports
这个可执行文件的构建版本信息,从结果看,我电脑里的goimports
是使用go1.13
版本构建的。
同样的,可以依次查看多个文件的构建版本信息。
|
|
从结果看,这两个工具的构建版本一样,都是使用go1.13
。
小提示:传递给go version的文件要是绝对路径,以上示例是因为我正好在$GOBIN目录下,所以可以省略路径,直接使用文件名。
更简便的是,你还可以把一个目录传给go version
,他可以打印出目录下所有可执行文件的构建信息。
|
|
查看go mod信息
通过go version
命令可以查看一个可执行文件的go mod信息,相信不少人还不知道这一点,这可是一个核武器的功能。
|
|
如上所示,只需要加一个-m
标识就可以打印出go mod信息。比如gocode
的,可以看出它的github地址是github.com/mdempsky/gocode
,模块名也一样,并且依赖了golang.org/x/tools
库,并且还显示了库的版本。
是不是非常清晰,当我们研究一个可执行文件的时候非常有用,因为你可以看到它的地址,它依赖了哪些第三方库。
不支持的文件
go version
有这么好的功能,也是有限制的,它只能查看Go语言编译生成的可执行文件。这个相信从上面的示例中也可以看出来,因为显示的这些构建版本信息都是Go语言相关的,其他语言也没有这些,所以其他语言生成的文件也就无法支持。比如我以ping
命令为例:
|
|
提示找不到相关的go版本信息,这个是很正常的,因为ping
不是Go编译生成的可执行文件。
小结
Go为我们提供了不少好用的工具,可能都隐藏在角落里,如果你仔细找,会有意想不到的收获。
本文为原创文章,转载注明出处,欢迎扫码关注公众号
flysnow_org
或者网站 https://www.flysnow.org/ ,第一时间看后续精彩文章。觉得好的话,请顺手点个赞吧。