golang笔记——命令

 https://www.cnblogs.com/tianyajuanke/p/5196436.html

1、GO命令一览

  GO提供了很多命令,包括打包、格式化代码、文档生成、下载第三方包等等诸多功能,我们可以通过在控制台下执行 go 来查看内置的所有命令

  下面来逐个介绍,也可以详细参考 https://github.com/hyper-carrot/go_command_tutorial

2、go build

  这个命令可以直接使用,也可以带上代码包或源码文件使用。

  如果是直接使用,表示试图编译当前目录所对应的代码包,如果当前目录不是一个有效的代码包(包含在 $GOPATH/src 目录下)则会报错;如果带上代码包名,则表示编译指定的代码包;如果带上源码文件,则表示编译指定源码文件。

  GO语言的源码文件分为三类,包括命令源码文件、库源码 文件和测试源码文件。如果编译的是命令源码文件,或包含命令源码文件的包(main包)时,编译通过后会生成可执行文件;反之则不会生成任何文件,只是做检查性编译。

  可以在执行 go build 命令时,加上一些标记,如:

  -v 标记,可以把命令执行过程中构建的包名(包含编译过程中依赖的包)打印出来,如果 go build 的是一个源码文件,则会打印出的包名为 command-line-arguments,这是编译源码文件时生成的虚拟包名,所以看到不用觉得奇怪。

  -x 标记,可以打印编译期间所用到的所有 shell 命令。

  -o 标记,用来指定生成文件的路径和名称。

  -a 标记,强制重新编译。

  -buildmode=shared 标记,这个参数可以指定当前编译生成的结果类型,如静态库和动态库。GO语言默认使用静态编译,好处是部署时非常简单,但使用动态库,可以减少分发包的大小,大家可以根据实际情况选择。注意,目前在windows下尚不支持编译成动态库。

  更多参数,请使用 go build -h 或 go help build 查看。

3、go install

  这个命令用于编译安装,可以作用于 main 包和非 main 包,然后将编译后的生成的执行文件存放到工程的 bin 目录下,将生成的归档文件(即静态链接库)存放到工程的 pkg 目录下。使用方式类似于 go build,可以在某个代码包目录下直接使用,也可以指定代码包使用。

4、go run

  编译并执行,只能作用于命令源码文件,一般用于开发中快速测试。

5、go clean

  该命令可以删除执行其它命令时产生的文件和目录,但我没有找到删除 pkg 目录下的归档文件的选项。

6、go test

  进行单元测试的工具,单元测试代码建议与被测试代码放在同一个代码包中,并以 "_test.go" 为后期,测试函数建议以 "Test" 为名称前缀。该命令可以对代码包进行测试,也可以指定某个测试代码文件运行(要一并带上被测试代码文件)

7、go get

  下载第三方代码包并编译安装 ,需要注意的是,它会下载安装到 GOPATH 环境变量配置的第一个工作区中。

  另外,我发现,如果某一个工作区中(不必是GOPATH 环境变量配置的第一个工作区中)已经存在该代码包,则不会重新下载。

  此外,我们还可以自己搭建代码托管网站,有兴趣可以参考:https://github.com/hyper-carrot/go_command_tutorial/blob/master/0.3.md

8、go doc

  文档注释相关,可以搭建本地GO文档服务器,包含自己的项目注释,更多细节请参考:https://github.com/hyper-carrot/go_command_tutorial/blob/master/0.5.md

9、go list

  不加任何标记直接使用,是显示指定包的导入路径,如 go list net/http 就显示 net/http。

  该命令加上 -json 标记可以显示完整信息,如:

  

  如果只想显示指定信息,可以使用 -f 标记,如 go list -f {{.GoFiles}} net/http 可以显示 net/http 包中的 GO 源码文件列表。(所以可以理解,默认的 go list 相当于 go list -f {{.ImportPath}})

10、go fmt

  作用于代码包,用于格式化代码包中的代码格式,注意不包含代码包中的子代码包。是 gofmt 的简单封装,相当于 gofmt -l -w ,更多信息,请通过 gofmt -h 查看。 

11、go fix

  简单的说,这是一个当GO语言版本升级之后,把代码包中旧的语法更新成新版本语法的自动化工具。它是 go tool fix 的简单封装,它作用于代码包。当需要升级自己的项目或者升级下载的第三方代码包,可以使用此方法。(下载并升级代码包可以使用 go get -fix 命令 )

12、go vet

  静态检查工具,这是个好东西,一般项目快完成时进行进行优化时需要,到时候再详细研究。

13、go tool pprof

  性能检查工具,等需要时再详细研究。详见:https://github.com/hyper-carrot/go_command_tutorial/blob/master/0.12.md

14、go tool cgo

  从 cgo的名字可以猜出,这是一个跟C语言和GO语言有关的命令,需要时再进行研究。

15、go env

  用于打印GO语言的环境信息,如 GOPATH 是工作区目录,GOROOT 是GO语言安装目录,GOBIN 是通过 go install 命令生成可执行文件的存放目录(默认是当前工作区的 bin 目录下),GOEXE 为生成可执行文件的后缀

16、转成汇编代码

go tool objdump -s "operate\.Login" server

上面的意思是,解析可执行文件server,将其中的 operate 包的 Login 方法转成汇编代码。

[转帖]go 命令的更多相关文章

  1. [转帖]xargs命令详解,xargs与管道的区别

    xargs命令详解,xargs与管道的区别 https://www.cnblogs.com/wangqiguo/p/6464234.html 之前一直说要学习一下 xargs 到现在为止也没学习.. ...

  2. [转帖]ipvsadm命令参考及其应用例子

    ipvsadm命令参考及其应用例子 https://blog.csdn.net/orichisonic/article/details/47375227 只是简单创建了 service和添加serve ...

  3. [转帖]Linux命令中特殊符号

    Linux命令中特殊符号 转自:http://blog.chinaunix.net/uid-16946891-id-5088144.html   在shell中常用的特殊符号罗列如下:# ; ;; . ...

  4. [转帖]dd命令详解

    dd命令详解 https://czmmiao.iteye.com/blog/1748748 之前一直对linux的命令很恐惧 现在发现 其实不是那么复杂 要仔细学习就可以了 比如 dd = disk ...

  5. [转帖]git命令参考手册

                      git init                                                  # 初始化本地git仓库(创建新仓库) git ...

  6. [转帖] dd 命令图解

    dd命令-->dd是disk dump的缩写,指定大小的块拷贝一个文件,同时进行指定的转换,起到一个初始化磁盘的作用  https://blog.csdn.net/jerry_1126/arti ...

  7. [转帖]pidstat 命令详解

    pidstat 命令详解 https://www.jianshu.com/p/3991c0dba094 pidstat -r -u -d -p 各种参数非常好用. pidstat 概述 pidstat ...

  8. [转帖]ps 命令详解

    ps 命令详解 https://www.jianshu.com/p/cba22cce2f97 ps 概述 Linux中的ps命令是Process Status的缩写.ps命令用来列出系统中当前运行的那 ...

  9. [转帖]iostat 命令详解

    iostat 命令详解 https://www.jianshu.com/p/5fed8be1b6e8 概述 iostat 主要用于输出磁盘IO 和 CPU的统计信息. iostat属于sysstat软 ...

随机推荐

  1. Python 装饰器笔记

    一.装饰器无参数 1.原函数无参数 def wrap_in_tag_b(fn): # wrap_in_tag_b 是真正的装饰器 def wrapped(): return "<b&g ...

  2. django学习笔记(3)

    Part 3: Views and templates ====> Write your first view$ edit polls\views.py from django.http imp ...

  3. 提交到开源git时出现:fatal: refusing to merge unrelated histories的解决办法

    解决办法   创建本地库和fetch远程分支这些前面的步骤这里略过.可以自行百度. 解决办法: 1.cmd进入项目的根目录. 2.执行下面的命令:git pull origin master --al ...

  4. zabbix监控DELL服务器硬件状态

    zabbix监控DELL服务器硬件状态 登录dell服务的管理页面 默认用户名:root 密码:calvin 服务器开放snmp信息,开启完应用 Zabbix服务器导入dell监控硬件模板 验证 sn ...

  5. Print Spooler 服务自动停止

    1)先在服务里停止并禁用Print Spooler : 2)删除此文件夹下的所有文件,C:\Windows\System32\spool\PRINTERS\ : 3)删除注册表 HKEY_LOCAL_ ...

  6. flask中的宏

    对于flask中的宏编程.我们使用 macro 来对宏起个名称 宏编程 对于我们来说是减少了代码的重用.以及简化了标签的操作,对与开发效率有很大的提升, 在html中.相信大多数都用到了.input ...

  7. Centos7+安装python3+wkhtmltoPdf+pdfkit

    前言 这几天要做一个将HTML转化为PDF的小功能.期间经历了颇多的挫折,刚开始是通过java做的,后来发现java库做这个事情实在是效果不理想,前端做好了样式转完之后会出现很多问题.后来我想起来py ...

  8. 【Unity Shader】(十) ------ UV动画原理及简易实现

    笔者使用的是 Unity 2018.2.0f2 + VS2017,建议读者使用与 Unity 2018 相近的版本,避免一些因为版本不一致而出现的问题. [Unity Shader](三) ----- ...

  9. centos7上的postgresql10安装和配置

    安装数据库 安装参考官方文档:https://www.postgresql.org/download/linux/redhat/ 1.Install the repository RPM: yum i ...

  10. Datawhale MySQL 训练营 Task6 实战项目

    作业 项目十:行程和用户(难度:困难) Trips 表中存所有出租车的行程信息.每段行程有唯一键 Id,Client_Id 和 Driver_Id 是 Users 表中 Users_Id 的外键.St ...