Go编译工具命令

Go编译工具

go build <编译文件>

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

# build 多文件
$ go build f1.go f2.go ...
$ go build .

# build 特定包
$ go build package/xxx

go clean <清除编译文件>

附加参数 备 注
-i 清除关联的安装的包和可运行文件,也就是通过go install安装的文件
-n 把需要执行的清除命令打印出来,但是不执行,这样就可以很容易的知道底层是如何运行的;
-r 循环的清除在 import 中引入的包
-x 打印出来执行的详细命令,其实就是 -n 打印的执行版本
-cache 删除所有go build命令的缓存
-testcache 删除当前包所有的测试结果

go run <运行不产生编译文件>

go run不会在运行目录下生成任何文件,可执行文件被放在临时文件中被执行,工作目录被设置为当前目录。在go run的后部可以添加参数,这部分参数会作为代码可以接受的命令行输入提供给程序

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

  1. 使用go build生成可执行文件。
  2. 运行可执行文件。

gofmt <格式化代码>

标记名称 标记描述
-l 仅把那些不符合格式化规范的、需要被命令程序改写的源码文件的绝对路径打印到标准输出。而不是把改写后的全部内容都打印到标准输出。
-w 把改写后的内容直接写入到文件中,而不是作为结果打印到标准输出。
-r 添加形如“a[b:len(a)] -> a[b:]”的重写规则。如果我们需要自定义某些额外的格式化规则,就需要用到它。
-s 简化文件中的代码。
-d 只把改写前后内容的对比信息作为结果打印到标准输出。而不是把改写后的全部内容都打印到标准输出。 命令程序将使用 diff 命令对内容进行比对。在 Windows 操作系统下可能没有 diff 命令,需要另行安装。
-e 打印所有的语法错误到标准输出。如果不使用此标记,则只会打印每行的第 1 个错误且只打印前 10 个错误。
-comments 是否保留源码文件中的注释。在默认情况下,此标记会被隐式的使用,并且值为 true。
-tabwidth 此标记用于设置代码中缩进所使用的空格数量,默认值为 8。要使此标记生效,需要使用“-tabs”标记并把值设置为 false。
-tabs 是否使用 tab('\t')来代替空格表示缩进。在默认情况下,此标记会被隐式的使用,并且值为 true。
-cpuprofile 是否开启 CPU 使用情况记录,并将记录内容保存在此标记值所指的文件中。

go install <编译安装>

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

go get <安装依赖>

附加参数 备 注
-v 显示操作流程的日志及信息,方便检查错误
-u 下载丢失的包,但不会更新已经存在的包
-d 只下载,不安装
-insecure 允许使用不安全的 HTTP 方式进行下载操作
-f 只有在你包含了 -u 参数的时候才有效,不让 -u 去验证 import 中的每一个都已经获取了,这对于本地 fork 的包特别有用
-fix 在获取源码之后先运行 fix,然后再去做其他的事情
-t 同时也下载需要为运行测试所需要的包

go generate <编译前自动执行代码>

使用go generate命令时有以下几点需要注意:

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

go generate命令格式如下所示:

go generate [-run regexp] [-n] [-v] [-x] [command] [build flags] [file.go... | packages]
  • -run 正则表达式匹配命令行,仅执行匹配的命令;
  • -v 输出被处理的包名和源文件名;
  • -n 显示不执行命令;
  • -x 显示并执行命令;
  • command 可以是在环境变量 PATH 中的任何命令。

执行go generate命令时,也可以使用一些环境变量,如下所示:

  • $GOARCH 体系架构(arm、amd64 等);
  • $GOOS 当前的 OS 环境(linux、windows 等);
  • $GOFILE 当前处理中的文件名;
  • $GOLINE 当前命令在文件中的行号;
  • $GOPACKAGE 当前处理文件的包名;
  • $DOLLAR 固定的$,不清楚具体用途。
posted @ 2021-06-03 16:08  Binb  阅读(2671)  评论(0编辑  收藏  举报