zoukankan      html  css  js  c++  java
  • golang笔记——命令

    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 方法转成汇编代码。

  • 相关阅读:
    shell脚本简单调试
    计算机揭秘之:网络分类和性能分析
    centos 7 虚拟机忘记密码
    算法时间复杂度计算
    strace命令 linux下调试神器
    Linux下core dump (段错误)
    dmesg + addr2line查看堆栈错误位置
    镜像 开源网站
    C语言---链表(包括学习过程中的思想活动)
    The C compiler "/usr/bin/cc" is not able to compile a simple test program. 解决方法
  • 原文地址:https://www.cnblogs.com/tianyajuanke/p/5196436.html
Copyright © 2011-2022 走看看