Go语言·不常用的Go命令详解

作者:孙飞撩技术

链接:http://www.jianshu.com/p/46c268e7a149

來源:简书

共3329字,阅读需8分钟

迁移自CSDN:

$ go build -x

如果你对Go的工具链好奇,或者使用了一个跨C编译器,并且想知道调用外部编译器用到的具体参数,或者怀疑链接器有bug;使用来查看所有调用。

$go build -gcflags

这个参数将会传递给编译器。列出来了所有我们可以传递给编译器的参数。

例如,禁用编译器优化和内联优化,你可以使用下面的参数:

$go test -v

如果不使用参数来测试,输出很少很多,我经常使用参数来打开详细测试日志。例子:

$ go test -race

现在可以使用Go工具提供的参数进行竞争检测。它会检测并报告竞争。开发的过程中用这个命令来检测一下。

注:完整的命令是:

$ go test -run

你可以在测试的时候通过参数来正则匹配过滤需要测试的代码。下面的命令只会运行test examples:

$ go test -coverprofile

当测试一个包的时候,可以输出一个测试覆盖率,然后使用命令来在浏览器里面可视化:

上面的命令将会创建一个测试覆盖率文件在浏览器打开结果.

$ go test -exec

一般很少有人知道Go的这个功能,你可以通过插入另一个程序。这个参数允许通过Go工具完成一些外部工作。

一个常见的需求场景是你需要在一些宿主机上面执行一些测试。我们可以通过命令调用命令来把二进制文件导入安卓设备并且可以收集到结果信息。参考这个来在安卓设备上面执行。

$ go get -u

如果你通过go get命令获取Go包,而这个包已经存在于本地的,那么这个命令并不会帮你更新包。可以强制更新到最新版。

如果你是一个库作者,你最好在你的安装说明上加上参数,例如,golint是这么做的:

$ go get -d

如果你想clone一个代码仓库到里面,跳过编译和安装环节,使用参数。这样它只会下载包并且在编译和安装之前停止。

当需要clone虚拟网址代码仓库的时候,我经常使用这个命令来代替,因为这样可以把Go代码自动放入合适的目录下面。例如:

这样可以克隆到$GOPATH/src/golang.org/x/ouath2目录下面。假设golang.org/x/oauth2是一个虚拟网址,通过获取这个代码仓库要比找出仓库的真实地址(go.googlesource.com/oauth2)更简单。

$ go get -t

如果你的测试包的有附加的依赖包,可以一并下载测试包的依赖包。如果没有加这个参数,只会下载非测试包的依赖包。

$ go list -f

这个命令可以列出来Go的所有包,并且可以指定格式。这个写脚本的时候很有用。

下面这个命令将会打印所有依赖的runtime包:

本文来自企鹅号 - Golang语言社区媒体

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏云计算教程系列

如何使用Nginx创建临时和永久重定向

HTTP重定向是将一个域或地址指向另一个域或地址的方式。有几种不同的重定向,每种重定向都意味着与客户端浏览器不同。两种最常见的类型是临时重定向和永久重定向。

1503
来自专栏黄日成的专栏

大话 Select、Poll、Epoll

提到select、poll、epoll相信大家都耳熟能详了,三个都是IO多路复用的机制,可以监视多个描述符的读/写等事件。

15.7K18
来自专栏小车博客

OpenVZ 魔改 BBR - lkl-rinetd 一键脚本

2651
来自专栏FreeBuf

OFFICE OLE2LINK(CVE-2017-0199)漏洞利用详解

漏洞概述 FireEye最近公布了一个OFFICE 0day,在无需用户交互的情况下,打开word文档就可以通过hta脚本执行任意代码。经过研究发现,此漏洞的...

2449
来自专栏后端云

挂载云硬盘

已有云主机id 27b31829-326f-4029-a537-bb327303a32c

4106
来自专栏阿杜的世界

【译】Linux概念架构的理解摘要一、Linux内核在整个计算机系统中的位置二、内核的作用三、Linux内核的整体架构四、高度模块化设计的系统,利于分工合作。五、系统中的数据结构六、子系统架构七、结论

声明:本文翻译自Conceptual Architecture of the Linux Kernel

1154
来自专栏北京马哥教育

LVM详解

petmaster出品 必是精品 一、概述 LVM全称为Logical Volume Manager,即逻辑卷管理器。LVM可以弹性的调整文件系统的容...

3079
来自专栏云计算教程系列

如何在Debian 9上设置Node.js生产应用程序

Node.js是一个开源JavaScript运行时环境,用于构建服务器端和网络应用程序。该平台可在Linux,macOS,FreeBSD和Windows上运行。...

1664
来自专栏java一日一条

Java EE7和Maven工程入门(2)

我们已经建立了父pom文件。这种特殊类型的文件用来定义我们项目即将使用的类库,它也配置了所有为了打包项目的每个模块而使用的maven工具。你可以检出第一部分代码...

872
来自专栏章鱼的慢慢技术路

Linux中的链接文件_软链接和硬链接

1483

扫码关注云+社区

领取腾讯云代金券