golang笔记——命令

一、GO命令一览git

  GO提供了不少命令,包括打包、格式化代码、文档生成、下载第三方包等等诸多功能,咱们能够经过在控制台下执行 go 来查看内置的全部命令github

  下面来逐个介绍,也能够详细参考 https://github.com/hyper-carrot/go_command_tutorialshell

 

二、go buildjson

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

  若是是直接使用,表示试图编译当前目录所对应的代码包,若是当前目录不是一个有效的代码包(包含在 $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 查看。

 

三、go install

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

 

四、go run

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

 

五、go clean

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

 

六、go test

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

 

七、go get

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

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

  此外,咱们还能够本身搭建代码托管网站,有兴趣能够参考:https://github.com/hyper-carrot/go_command_tutorial/blob/master/0.3.md

 

八、go doc

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

 

九、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}})

 

十、go fmt

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

 

十一、go fix

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

 

十二、go vet

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

 

1三、go tool pprof

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

 

1四、go tool cgo

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

 

1五、go env

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

 

1六、转成汇编代码

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

 

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

相关文章
相关标签/搜索