Golang之工具包 - Go语言中文社区

Golang之工具包


go build (go语言编译命令)

 这个命令主要用于编译代码。在包的编译过程中,若有必要,会同时编译与之相关联的包。

如果是main包,当你执行go build之后,它就会在当前目录下生成一个可执行文件。如果你需要在$GOPATH/bin下生成相应的文件,需要执行go install

如果某个项目文件夹下有多个文件,而你只想编译某个文件,就可在go build之后加上文件名,例如go build a.gogo build命令默认会编译当前目录下的所有go文件

参数的介绍

-a 强制重新构建
-n 把需要执行的编译命令打印出来,但是不执行,这样就可以很容易的知道底层是如何运行的
-p n 指定可以并行可运行的编译数目,默认是CPU数目
-race 开启竞态检测
-v 编译时显示包名
-x 打印编译时会用到的所有命令

go clean(清除编译文件)

这个命令是用来移除当前源码包和关联源码包里面编译生成的文件。这些文件包括:

  • 执行go build命令时在当前目录下生成的与包名或者 Go 源码文件同名的可执行文件
  • 执行go test命令并加入-c标记时在当前目录下生成的以包名加“.test”后缀为名的文件
  • 执行go install命令安装当前代码包时产生的结果文件
  • 在编译 Go 或 C 源码文件时遗留在相应目录中的文件或目录 。包括:“_obj”和“_test”目录,名称为“_testmain.go”、“test.out”、“build.out”或“a.out”的文件,名称以“.5”、“.6”、“.8”、“.a”、“.o”或“.so”为后缀的文件
  • 一般都是利用go clean命令清除编译文件,然后再将源码递交到 github 上,方便对于源码的管理

go run(编译并运行)

go run命令会编译源码,可执行文件被放在临时文件中被执行,工作目录被设置为当前目录,直接执行源码的 main() 函数,不会在当前目录留下可执行文件

go fmt(格式化代码文件)

  • 使用go fmt命令,其实是调用了gofmt,而且需要参数-w,否则格式化结果不会写入文件。gofmt -w -l src,可以格式化整个项目。
  • go fmt命令是 gofmt 的简单封装

gofmt参数介绍:

-l 显示那些需要格式化的文件
-w 把改写后的内容直接写入到文件中,而不是作为结果打印到标准输出。
-r 添加形如“a[b:len(a)] -> a[b:]”的重写规则,方便我们做批量替换
-s 简化文件中的代码
-d 显示格式化前后的diff而不是写入文件,默认是false
-e 打印所有的语法错误到标准输出。如果不使用此标记,则只会打印不同行的前10个错误。
-cpuprofile 支持调试模式,写入相应的cpufile到指定的文件

go get(一键获取代码、编译并安装)

go get 命令可以借助代码管理工具通过远程拉取或更新代码包及其依赖包,并自动完成编译和安装。整个过程就像安装一个 App 一样简单。

这个命令是用来动态获取远程代码包的,目前支持的有BitBucket、GitHub、Google Code和Launchpad。这个命令在内部实际上分成了两步操作:第一步是下载源码包,第二步是执行go install。

参数介绍:

-d 只下载不安装
-f 只有在你包含了-u参数的时候才有效,不让-u去验证import中的每一个都已经获取了,这对于本地fork的包特别有用
-fix 在获取源码之后先运行fix,然后再去做其他的事情
-t 同时也下载需要为运行测试所需要的包
-u 强制使用网络去更新包和它的依赖包
-v 显示执行的命令

go install(编译并安装)

第一步是生成结果文件(可执行文件或者 .a 包),第二步会把编译好的结果移到 $GOPATH/pkg 或者 $GOPATH/bin。

go install 的编译过程有如下规律:

  • go install 是建立在 GOPATH 上的,无法在独立的目录里使用 go install。
  • GOPATH 下的 bin 目录放置的是使用 go install 生成的可执行文件,可执行文件的名称来自于编译时的包名。
  • go install 输出目录始终为 GOPATH 下的 bin 目录,无法使用-o附加参数进行自定义。
  • GOPATH 下的 pkg 目录放置的是编译期间的中间文件

go test(测试)

  • 自动读取源码目录下面名为 *_test.go 的文件,生成并运行测试用的可执行文件
  • 单元测试源码文件可以由多个测试用例组成,每个测试用例函数需要以Test为前缀
  • 测试用例文件不会参与正常源码编译,不会被包含到可执行文件中
  • 测试用例文件使用go test指令来执行,不需要 main() 作为函数入口
  • Test开头的函数会自动被执行

常用的参数:

-bench regexp 执行相应的benchmarks,例如 -bench=.
-cover 开启测试覆盖率
-run regexp 只运行regexp匹配的函数,例如 -run=Array 那么就执行包含有Array开头的函数
-v 显示测试的详细命令

其他命令

go version 查看go当前的版本
go env 查看当前go的环境变量
go list 列出当前全部安装的package

 

 

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/feikillyou/article/details/110085452
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2023-01-03 21:06:06
  • 阅读 ( 508 )
  • 分类:Go

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢