Go命令行操作
这篇文章主要是简单总结一下go语言常用的命令
go build(编译命令)
// 编译,生成可执行文件 | |
go build xxx.go | |
| |
// 运行可执行文件,windows上会加上exe,linux没有后缀 | |
./可执行文件 | |
| |
// go build+文件列表,会生成多个可执行文件 | |
go build xxx.go bbb.go …… | |
|
参数
参数 | 备注 |
-o | 编译的包名 |
-v | 编译时显示包名 |
-p n | 开启并发编译,默认情况下该值为 CPU 逻辑核数 |
-a | 强制重新构建 |
-n | 打印编译时会用到的所有命令,但不真正执行 |
-x | 打印编译时会用到的所有命令 |
-race | 开启竞态检测 |
演示
go clean(清除编译文件)
go clean命令用于移除当前模块或包目录下生成的中间文件和缓存文件。它可以帮助开发者清理编译时生成的临时文件
参数
- -i 清除关联的安装的包和可运行文件,也就是通过 go install 安装的文件
- -n 把需要执行的清除命令打印出来,但是不执行,这样就可以很容易的知道底层是如何运行的
- -r 循环的清除在 import 中引入的包
- -x 打印出来执行的详细命令,其实就是 -n 打印的执行版本
演示
go run(编译并运行)
go run 命令会编译源码,并且直接执行源码的 main() 函数,不会在当前目录留下可执行文件
演示
go fmt(格式化代码文件)
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 到指定的文件
演示
go install(编译并安装)
参数
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 目录放置的是编译期间的中间文件。
go install 会在GOPATH的bin目录下生成对应的可执行文件
懒得复现了,直接拿的大佬的图
go get(一键获取包,编译并安装)
参数
-d 只下载不安装 -f 只有在你包含了 -u 参数的时候才有效,不让 -u 去验证 import 中的每一个都已经获取了,这对于本地 fork 的包特别有用 -fix 在获取源码之后先运行fix,然后再去做其他的事情 -t 同时也下载需要为运行测试所需要的包 -u 强制使用网络去更新包和它的依赖包 -v 显示执行的命令
演示
go get和go install的区别
go get
- 获取包及其依赖:
go get
用于从远程仓库(例如 GitHub)获取包及其依赖项,并将它们下载到本地模块缓存中。 - 更新模块:
go get
可以用于更新现有模块到指定版本或最新版本。例如,go get -u example.com/pkg
将更新模块和它的所有依赖到最新的次要版本或修订版本。 - 添加依赖项:
go get
会将新的依赖项添加到go.mod
文件中。例如,go get example.com/pkg@v1.2.3
会将example.com/pkg
的特定版本添加到go.mod
中。 - 安装可执行文件:在 Go 1.17 之前,
go get
也可以用来安装可执行文件,但在 Go 1.17 及以后,这种用法已被弃用。现在推荐使用go install
来安装可执行文件。
示例用法:
# 获取并安装包及其依赖项 | |
go get example.com/pkg | |
| |
# 更新包及其依赖项 | |
go get -u example.com/pkg | |
| |
# 获取特定版本的包 | |
go get example.com/pkg@v1.2.3 |
go install
- 安装可执行文件:
go install
用于从指定的 Go 源代码编译并安装可执行文件到$GOPATH/bin
或$GOBIN
目录中。 - 与版本号一起使用:在 Go 1.16 及以后,
go install
可以与版本号一起使用,以便安装特定版本的可执行文件,而无需修改go.mod
文件。例如,go install example.com/pkg@v1.2.3
会编译并安装example.com/pkg
的版本v1.2.3
到本地。
示例用法:
# 在当前模块中安装可执行文件 | |
go install ./... | |
| |
# 安装特定版本的可执行文件(适用于 Go 1.16 及以后) | |
go install example.com/pkg@v1.2.3 |
总结
go get
主要用于获取包及其依赖,并添加到go.mod
文件中。在 Go 1.17 之前,也用于安装可执行文件,但这一功能已被弃用。go install
主要用于编译并安装可执行文件。在 Go 1.16 及以后,推荐使用go install
来安装特定版本的可执行文件。
在 Go 1.17 及以后,如果你需要安装某个包的可执行文件,应该使用 go install
,而不再使用 go get
。如果你需要添加依赖或更新模块版本,则使用 go get
。
go test(测试命令)
go test 命令,会自动读取源码目录下面名为 *_test.go 的文件,生成并运行测试用的可执行文件。
主要提供“单元测试”和“基准测试”两种方案
单元测试——测试和验证代码的框架 – 1) 单元测试命令行 – 2) 运行指定单元测试用例 – 3) 标记单元测试结果 – 4) 单元测试日志
基准测试——获得代码内存占用和运行效率的性能数据 – 1) 基础测试基本使用 – 2) 基准测试原理 – 3) 自定义测试时间 – 4) 测试内存 – 5) 控制计时器