【Go】Go的 9个常用基本命令

1、go build命令(编译命令)

1.1、go build 无参数编译

// 编译,生成可执行文件
go build ***.go

// 运行可执行文件,windows上会加上exe,linux没有后缀
./可执行文件

// go build+文件列表,会生成多个可执行文件
go build ***.go ***.go ……

1.2、go build 参数设置

参数备注
-o编译的包名
-v编译时显示包名
-p n开启并发编译,默认情况下该值为 CPU 逻辑核数
-a强制重新构建
-n打印编译时会用到的所有命令,但不真正执行
-x打印编译时会用到的所有命令
-race开启竞态检测

1.3、示例

在这里插入图片描述

2、go clean命令(清除编译文件)

2.1、参数

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

  • _obj/ 旧的 object 目录,由 Makefiles 遗留
  • _test/ 旧的 test 目录,由 Makefiles 遗留
  • _testmain.go 旧的 gotest 文件,由M akefiles 遗留
  • test.out 旧的 test 记录,由 Makefiles 遗留
  • build.out 旧的 test 记录,由 Makefiles 遗留
  • *.[568ao] object 文件,由 Makefiles 遗留
  • DIR(.exe) 由 go build 产生
  • DIR.test(.exe) 由 go test -c 产生
  • MAINFILE(.exe) 由 go build MAINFILE.go 产生
  • *.so 由 SWIG 产生

参数介绍

  • -i 清除关联的安装的包和可运行文件,也就是通过 go install 安装的文件
  • -n 把需要执行的清除命令打印出来,但是不执行,这样就可以很容易的知道底层是如何运行的
  • -r 循环的清除在 import 中引入的包
  • -x 打印出来执行的详细命令,其实就是 -n 打印的执行版本

一般都是利用这个命令清除编译文件,然后 github 递交源码,在本机测试的时候这些编译文件都是和系统相关的,但是对于源码管理来说没必要。

go clean -i -n

cd /Users/astaxie/develop/gopath/src/mathapp
rm -f mathapp mathapp.exe mathapp.test mathapp.test.exe app app.exe
rm -f /Users/astaxie/develop/gopath/bin/mathapp

2.2、示例

在这里插入图片描述

3、go run命令(编译并运行)

3.1、参数

go run 命令会编译源码,并且直接执行源码的 main() 函数,不会在当前目录留下可执行文件。

go run 不能使用“go run+包”的方式进行编译,如需快速编译运行包,需要使用如下步骤来代替:

  • 使用 go build 生成可执行文件。
  • 运行可执行文件。

3.2、示例

在这里插入图片描述

4、go fmt命令(格式化代码文件)

4.1、参数

为了减少浪费在排版上的时间,go 工具集中提供了一个 go fmt 命令它可以帮你格式化你写好的代码文件,使你写代码的时候不需要关心格式,只需要在写完之后执行go fmt <文件名>.go ,代码就会被修改成了标准格式。

gofmt -w -l src,可以格式化整个项目。所以 go fmt 是 gofmt 的上层一个包装的命令。

参数介绍

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

4.2、示例

在这里插入图片描述

5、go install命令(编译并安装)

5.1、参数

go install 只是将编译的中间文件放在 GOPATH 的 pkg 目录下,以及固定地将编译结果放在 GOPATH 的 bin 目录下。这个命令在内部实际上分成了两步操作:

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

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

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

5.2、示例

在这里插入图片描述
go install 会在GOPATH的bin目录下生成对应的可执行文件
在这里插入图片描述

6、go get命令(一键获取包、编译并安装)

6.1、参数

golang.org在国内由于一些众所周知的原因无法直接访问,因为golang.org被墙的原因,可以使用github.com/golang/tools 和 golang.org/x/tools 是一样的,下载后复制到golang.org中。
都可以用:

go get -u + 远程包

参数介绍:

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

6.2、示例

在这里插入图片描述

7、go generate命令(在编译前自动化生成某类代码)

7.1、参数

go generate 命令是从 Go1.4 开始设计的,用于在编译前自动化生成某类代码。
go generate 和 go build 是完全不一样的命令,通过分析源码中特殊的注释,然后执行相应的命令。

//go:generate command arg1 arg2

这样在同一个目录下执行命令go generate就会自动运行命令command arg1 arg2。command可以是在PATH中的任何命令,应用非常广泛。

有几点需要注意:

  • 该特殊注释必须在 .go 源码文件中。
  • 每个源码文件可以包含多个 generate 特殊注释时。
  • 显示运行 go generate 命令时,才会执行特殊注释后面的命令。
  • 命令串行执行的,如果出错,就终止后面的执行。
  • 特殊注释必须以"//go:generate"开头,双斜线后面没有空格。

7.2、示例

在这里插入图片描述

8、go test命令(测试命令)

go test 命令,会自动读取源码目录下面名为 *_test.go 的文件,生成并运行测试用的可执行文件。

主要提供“单元测试”和“基准测试”两种方案

  • 单元测试——测试和验证代码的框架
    – 1) 单元测试命令行
    – 2) 运行指定单元测试用例
    – 3) 标记单元测试结果
    – 4) 单元测试日志

  • 基准测试——获得代码内存占用和运行效率的性能数据
    – 1) 基础测试基本使用
    – 2) 基准测试原理
    – 3) 自定义测试时间
    – 4) 测试内存
    – 5) 控制计时器

9、go pprof命令(性能分析命令)

go pprof 可以帮助开发者快速分析及定位各种性能问题,如 CPU 消耗、内存分配及阻塞分析。

性能分析首先需要使用 runtime.pprof 包嵌入到待分析程序的入口和结束处。runtime.pprof 包在运行时对程序进行每秒 100 次的采样,最少采样 1 秒。然后将生成的数据输出,让开发者写入文件或者其他媒介上进行分析。

go pprof 工具链配合 Graphviz 图形化工具可以将 runtime.pprof 包生成的数据转换为 PDF 格式,以图片的方式展示程序的性能分析结果。

  • 安装第三方图形化显式分析数据工具(Graphviz)
yum install graphiviz
  • 安装第三方性能分析来分析代码包
go get github.com/pkg/profile
  • 5
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
在 Go 语言中,生成带文件版本号的文件并不像在其他编程语言中那样常见,也不像 Windows 操作系统那样具有内置的机制。不过,您可以在您的 Go 项目中使用一些第三方工具来实现这一功能,下面是其中两个比较常用的工具: 1. goversioninfo:这是一个 Go 语言编写的工具,可以为您的 Windows 程序生成带文件版本号的文件。您可以使用以下命令安装 goversioninfo: ``` go get github.com/josephspurrier/goversioninfo/cmd/goversioninfo ``` 安装完成后,您可以在您的 Go 项目中使用该工具来生成带文件版本号的文件。例如,如果您要将您的项目的版本号更新为 v1.2.3,并生成一个带文件版本号的可执行文件 myapp.exe,您可以使用以下命令: ``` goversioninfo -o versioninfo.go go build -ldflags="-X main.version=v1.2.3" -o myapp.exe main.go versioninfo.go ``` 其中,goversioninfo 命令用于生成 versioninfo.go 文件,该文件包含了文件版本号等信息。go build 命令使用 -ldflags 参数来指定版本号信息。 2. go-bindata:这是一个 Go 语言编写的工具,可以将您的资源文件打包成一个单独的可执行文件,并为其生成带文件版本号的文件。您可以使用以下命令安装 go-bindata: ``` go get github.com/go-bindata/go-bindata/... ``` 安装完成后,您可以在您的 Go 项目中使用该工具来生成带文件版本号的文件。例如,如果您要将您的项目的版本号更新为 v1.2.3,并生成一个带文件版本号的可执行文件 myapp.exe,您可以使用以下命令: ``` go-bindata -pkg main -o bindata.go assets/ go build -ldflags="-X main.version=v1.2.3" -o myapp.exe main.go bindata.go ``` 其中,go-bindata 命令用于将 assets/ 目录下的资源文件打包成 bindata.go 文件,该文件包含了资源文件的二进制数据。go build 命令使用 -ldflags 参数来指定版本号信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

沙振宇

你的鼓励将是我创作的最大动力~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值