博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
go——标准命令
阅读量:4991 次
发布时间:2019-06-12

本文共 1918 字,大约阅读时间需要 6 分钟。

Go本身包含大量用户处理Go程序的命令和工具.

1.子命令

go命令的子命令:

build:用于编译指定的代码包或Go语言源码文件.
  命令源码文件会被编译成可执行文件,并存放到命令执行的目录或指定目录下.
  而库源码文件被编译后,则不会在非临时目录中留下任何文件.
clean:用于清除因执行其它go命令而遗留下来的临时目录和文件.
doc:用于显示Go语言代码包以及程序实体的文档.
env:用于打印go语言相关的环境信息.
fix:用于修正指定代码包的源码文件中包含的过时语法和代码调用.
fmt:用于格式化指定代码包中的Go源码文件.实际上是通过执行gofmt命令来实现功能的.
generate:用于识别指定代码吧中源码文件中的go:generate注释,并执行其携带的任意命令.
  该命令独立于Go语言标准的编译和安装体系.
  如果你有需要解析的go:generate注释,就单独运行它.常用于自动生成或改动Go源码文件.
get:用于下载,编译并安装指定的代码包及其依赖包.
install:用于编译并安装指定的代码包及其依赖包.
  go install 的功能和 go build 类似,附加参数绝大多数都可以与 go build 通用。
  go install 只是将编译的中间文件放在 GOPATH 的 pkg 目录下,以及固定地将编译结果放在 GOPATH 的 bin 目录下。
  安装命令源码文件后,代码包所在的工作区目录的bin子目录,或者当前环境变量GOBIN指向的目录中会生成相应的可执行文件.
  安装库源码文件后,会在代码包所在的工作区目录的pkg子目录中生成相应的归档文件.
list:用于显示指定代码包的信息.
  利用Go语言标准库代码包text/template中规定的模板语法,你可以非常灵活地控制输出信息.
run:用于编译并运行指定地命令源码文件.
test:用于测试指定地代码包,前提是该代码包目录中存在测试源码文件.
tool:用于运行Go语言的特殊工具
vet:用于检查指定代码包中的Go语言源码,并报告发现可疑代码问题.
该命令提供了除编译以外的有一个程序检查方法,可以用来找到程序中的潜在错误.
version:用于显示当前安装的Go语言的版本信息以及计算环境.

2.标记

执行上述命令的时候,可以通过附加一些额外的标记来定制命令的执行过程.

go命名的一些标记:
-a:用于强行重新编译所有涉及的Go语言的代码包(包括Go语言标准库中的代码包),即使它们已经是最新的了.
-n:使命令仅打印其执行过程中用到的所有命令,而不真正执行它们.
  如果只想或查看命令的执行过程,而不想改变任何东西,使用它正合适.
-race:用于检测并报告Go语言程序中存在的数据竞争问题.当用Go语言编写并发程序时,这是重要的检测手段.
-v:用于打印命令执行过程中涉及的代码包.这一定包括我们指定的目标代码包,
  并且有时还会包括该代码包直接或简介依赖的那些代码包.这会让你知道那些代码包被处理过.
-work:用于打印命令执行时生成和使用的临死工作目录的名字,且命令执行完成后不删除它.
  这个目录下的文件可能对你有用,也可以从侧面了解命令的执行过程.
  如果不添加此标记,那么临时目录会在命令执行完毕前删除.
-x:使命令打印其执行过程中用到的所有命令,同时执行它们.

3.工具

[root@centos001 example.v2]# go tool

addr2line
asm
buildid
cgo
compile
cover
dist
doc
fix
link
nm
objdump
pack
pprof
test2json
tour
trace
vet
(1)pprof
用于以交互的方式访问一些性能概要文件.命令将会分析给定的概要文件,并根据要求提供高可读性的输出信息.
这个工具可以分析的概要文件包括CPU的概要文件\内存概要文件和程序阻塞概要文件.
这些包含Go程序运行信息的概要文件,可以通过标准库代码包runtime和runtime/pprof来生成.
(2)trace
用于读取Go程序踪迹文件,并以图形化的方式展示出来.
它可以让我们深刻了解Go程序在运行过程中的内部情况.
比如当前进程堆中的大小及使用情况,程序中的多个goroutine是怎样被调度的,以及它们在某个时刻被调度的原因.
上面两个工具对程序调优非常有帮助.

转载于:https://www.cnblogs.com/yangmingxianshen/p/10089646.html

你可能感兴趣的文章
自己写的连击文字特效
查看>>
【Android】eclipse打不开的解决办法和“Jar mismatch! Fix your dependencies”的解决
查看>>
Mysql查询某字段值重复的数据
查看>>
Java 自学笔记-基本语法3setOut()方法设置新的输出流
查看>>
cocos2d-JS 模块 anysdk 概述
查看>>
docker镜像mac下保存路径
查看>>
docker使用 命令
查看>>
关于C#操作INI文件的总结
查看>>
ZeptoLab Code Rush 2015 B. Om Nom and Dark Park
查看>>
ctci1.2
查看>>
[译]RabbitMQ教程C#版 - 路由
查看>>
升级项目到.NET Core 2.0,在Linux上安装Docker,并成功部署
查看>>
调用API函数减少c#内存占用(20+m减至1m以下)
查看>>
Android:onNewIntent()触发机制及注意事项
查看>>
珠宝公司之感想
查看>>
项目问题
查看>>
scss侦听并压缩
查看>>
我有接口文档, 你有酒吗?
查看>>
iOS - Push 通知推送
查看>>
[FJOI2007]轮状病毒
查看>>