前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Go命令行操作

Go命令行操作

原创
作者头像
f1sh
发布2024-07-25 16:21:20
910
发布2024-07-25 16:21:20

Go命令行操作

这篇文章主要是简单总结一下go语言常用的命令

go build(编译命令)

代码语言:javascript
复制
 // 编译,生成可执行文件
 go build xxx.go
 ​
 // 运行可执行文件,windows上会加上exe,linux没有后缀
 ./可执行文件
 ​
 // go build+文件列表,会生成多个可执行文件
 go build xxx.go bbb.go ……
 ​

参数

参数

备注

-o

编译的包名

-v

编译时显示包名

-p n

开启并发编译,默认情况下该值为 CPU 逻辑核数

-a

强制重新构建

-n

打印编译时会用到的所有命令,但不真正执行

-x

打印编译时会用到的所有命令

-race

开启竞态检测

演示

image-20240724143330289
image-20240724143330289

go clean(清除编译文件)

go clean命令用于移除当前模块或包目录下生成的中间文件和缓存文件。它可以帮助开发者清理编译时生成的临时文件

参数

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

演示

image-20240724144254643
image-20240724144254643

go run(编译并运行)

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

演示

image-20240724145307943
image-20240724145307943

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 到指定的文件

演示

image-20240724145651944
image-20240724145651944

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 目录放置的是编译期间的中间文件。

image-20240724151011761
image-20240724151011761

go install 会在GOPATH的bin目录下生成对应的可执行文件

image-20240724151101197
image-20240724151101197

懒得复现了,直接拿的大佬的图

go get(一键获取包,编译并安装)

参数

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

演示

image-20240724151723263
image-20240724151723263

go get和go install的区别

go get

  1. 获取包及其依赖go get 用于从远程仓库(例如 GitHub)获取包及其依赖项,并将它们下载到本地模块缓存中。
  2. 更新模块go get 可以用于更新现有模块到指定版本或最新版本。例如,go get -u example.com/pkg 将更新模块和它的所有依赖到最新的次要版本或修订版本。
  3. 添加依赖项go get 会将新的依赖项添加到 go.mod 文件中。例如,go get example.com/pkg@v1.2.3 会将 example.com/pkg 的特定版本添加到 go.mod 中。
  4. 安装可执行文件:在 Go 1.17 之前,go get 也可以用来安装可执行文件,但在 Go 1.17 及以后,这种用法已被弃用。现在推荐使用 go install 来安装可执行文件。
示例用法:
代码语言:javascript
复制
 # 获取并安装包及其依赖项
 go get example.com/pkg
 ​
 # 更新包及其依赖项
 go get -u example.com/pkg
 ​
 # 获取特定版本的包
 go get example.com/pkg@v1.2.3

go install

  1. 安装可执行文件go install 用于从指定的 Go 源代码编译并安装可执行文件到 $GOPATH/bin$GOBIN 目录中。
  2. 与版本号一起使用:在 Go 1.16 及以后,go install 可以与版本号一起使用,以便安装特定版本的可执行文件,而无需修改 go.mod 文件。例如,go install example.com/pkg@v1.2.3 会编译并安装 example.com/pkg 的版本 v1.2.3 到本地。
示例用法:
代码语言:javascript
复制
 # 在当前模块中安装可执行文件
 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) 控制计时器

参考

https://blog.csdn.net/u014597198/article/details/103091391?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522172180204316800227427996%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=172180204316800227427996&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-1-103091391-null-null.142^v100^pc_search_result_base3&utm_term=go%E5%91%BD%E4%BB%A4%E8%A1%8C%E6%93%8D%E4%BD%9C&spm=1018.2226.3001.4187

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Go命令行操作
  • go build(编译命令)
    • 参数
      • 演示
      • go clean(清除编译文件)
        • 参数
          • 演示
          • go run(编译并运行)
            • 演示
            • go fmt(格式化代码文件)
              • 参数
                • 演示
                • go install(编译并安装)
                  • 参数
                  • go get(一键获取包,编译并安装)
                    • 参数
                      • 演示
                      • go get和go install的区别
                        • go get
                          • 示例用法:
                        • go install
                          • 示例用法:
                        • 总结
                        • go test(测试命令)
                        • 参考
                        领券
                        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档