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+包”的方式进行编译,如需快速编译运行包,需要使用如下步骤来代替:
- 使用
go build
生成可执行文件。 - 运行可执行文件。
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 固定的
$
,不清楚具体用途。
Songzhibin