1.3 Go 命令

Usage:

  1. go command [arguments]

The commands are:

  1. build compile packages and dependencies
  2. clean remove object files
  3. doc show documentation for package or symbol
  4. env print Go environment information
  5. bug start a bug report
  6. fix run go tool fix on packages
  7. fmt run gofmt on package sources
  8. generate generate Go files by processing source
  9. get download and install packages and dependencies
  10. install compile and install packages and dependencies
  11. list list packages
  12. run compile and run Go program
  13. test test packages
  14. tool run specified go tool
  15. version print Go version
  16. vet run go tool vet on packages

Use “go help [command]” for more information about a command.

Additional help topics:

  1. c calling between Go and C
  2. buildmode description of build modes
  3. filetype file types
  4. gopath GOPATH environment variable
  5. environment environment variables
  6. importpath import path syntax
  7. packages description of package lists
  8. testflag description of testing flags
  9. testfunc description of testing functions

Use “go help [topic]” for more information about that topic.

编译包和依赖项

go build

用法

  1. go build [-o output] [-i] [build flags] [packages]

Build会编译导入路径命名的包及其依赖项,但不会安装结果。

如果构建的参数是.go文件的列表,则build会将它们视为指定单个包的源文件列表。

在编译单个主包时,build会将生成的可执行文件写入以第一个源文件命名的输出文件(’go build ed.go rx.go’write’ed’或’ed.exe’)或源代码目录( ‘go build unix / sam’写’sam’或’sam.exe’)。编写Windows可执行文件时会添加“.exe”后缀。

在编译多个包或单个非主包时,build会编译包但丢弃生成的对象,仅用于检查是否可以构建包。

编译包时,构建会忽略以’_test.go’结尾的文件。

-o标志仅在编译单个包时允许,强制构建将结果可执行文件或对象写入命名输出文件,而不是最后两段中描述的默认行为。

-i标志安装作为目标依赖项的软件包。

构建标志由构建,清理,获取,安装,列表,运行和测试命令共享:

  1. -一个
  2. 强制重建已经是最新的包。
  3. -n
  4. 打印命令但不运行它们。
  5. -pn
  6. 程序的数量,例如构建命令或
  7. 测试二进制文件,可以并行运行。
  8. 默认值是可用的CPU数。
  9. -种族
  10. 启用数据竞争检测。
  11. 仅支持linux / amd64freebsd / amd64darwin / amd64windows / amd64
  12. -msan
  13. 启用与内存清理程序的互操作。
  14. 仅在linux / amd64linux / arm64上支持
  15. 并且只有Clang / LLVM作为主机C编译器。
  16. -v
  17. 在编译包时打印包的名称。
  18. -工作
  19. 打印临时工作目录的名称和
  20. 退出时不要删除它。
  21. -X
  22. 打印命令。
  23. -asmflags'[pattern =] arg list'
  24. 传递每个go工具asm调用的参数。
  25. -buildmode模式
  26. 构建模式使用。有关更多信息,请参阅“go help buildmode”。
  27. - 编译器名称
  28. 要使用的编译器的名称,如在runtime.Compilergccgogc)中。
  29. -gccgoflags'[pattern =] arg list'
  30. 传递每个gccgo编译器/链接器调用的参数。
  31. -gcflags'[pattern =] arg list'
  32. 传递每个go工具编译调用的参数。
  33. -installsuffix后缀
  34. 要在程序包安装目录的名称中使用的后缀,
  35. 为了使输出与默认构建分开。
  36. 如果使用-race标志,则安装后缀将自动设置为race
  37. 或者,如果明确设置,则附加_race。同样对于-msan
  38. 旗。使用需要非默认编译标志的-buildmode选项
  39. 有类似的效果。
  40. -ldflags'[pattern =] arg list'
  41. 传递每个go工具链接调用的参数。
  42. -linkshared
  43. 链接以前创建的共享库
  44. -buildmode =共享。
  45. -mod模式
  46. 模块下载模式使用:readonlyvendor
  47. 有关更多信息,请参阅“go help modules”。
  48. -pkgdir dir
  49. dir安装并加载所有包,而不是通常的位置。
  50. 例如,使用非标准配置构建时,
  51. 使用-pkgdir将生成的包保存在单独的位置。
  52. -tags'标签列表'
  53. 一个以空格分隔的构建标记列表,在此期间要考虑满足
  54. 建立。有关构建标记的更多信息,请参阅的说明
  55. go / build包的文档中构建约束。
  56. -toolexec'cmd args'
  57. 用于调用vetasm等工具链程序的程序。
  58. 例如,go命令将运行,而不是运行asm
  59. 'cmd args / path / to / asm <asm>的参数'

-asmflags,-gccgoflags,-gcflags和-ldflags标志接受以空格分隔的参数列表,以在构建期间传递给基础工具。要在列表中的元素中嵌入空格,请使用单引号或双引号将其括起来。参数列表可以在包模式和等号之后,这限制了该参数列表的使用以构建匹配该模式的包(有关包模式的描述,请参阅’go help packages’)。如果没有模式,则参数列表仅适用于命令行上指定的包。可以用不同的模式重复标志,以便为不同的包组指定不同的参数。如果包与多个标志中给出的模式匹配,则命令行上的最新匹配将获胜。例如,’go build -gcflags = -S fmt’

有关指定包的更多信息,请参阅“go help packages”。有关安装包和二进制文件的更多信息,请运行’go help gopath’。有关在Go和C / C ++之间调用的更多信息,请运行’go help c’。

注意:Build符合某些约定,例如’go help gopath’所描述的约定。但是,并非所有项目都遵循这些惯例。具有自己的约定或使用单独的软件构建系统的安装可以选择使用较低级别的调用,例如“go tool compile”和“go tool link”,以避免构建工具的一些开销和设计决策。

另见:go install,go get,go clean。

删除目标文件和缓存的文件

go clean

用法

  1. go clean [clean flags] [build flags] [packages]

Clean从包源目录中删除目标文件。go命令在临时目录中构建大多数对象,因此go clean主要关注其他工具留下的目标文件或go build的手动调用。

具体来说,clean从与导入路径对应的每个源目录中删除以下文件:

  1. _obj /旧对象目录,从Makefiles
  2. _test / old测试目录左侧,从Makefiles
  3. _testmain.gogotest文件左侧,从Makefiles
  4. test.out旧测试日志左侧,从Makefiles
  5. build.out旧测试日志左侧,从Makefiles
  6. * 左侧。 [568ao]目标文件,来自Makefile
  7. DIR(.exe)来自go build
  8. DIR.test(.exe)来自go test -c
  9. MAINFILE(.exe)来自go build MAINFILE.go
  10. * .so来自SWIG

在列表中,DIR表示目录的最终路径元素,MAINFILE是构建程序包时未包含的目录中任何Go源文件的基本名称。

-i标志导致clean删除相应的已安装存档或二进制文件(’install install’将创建什么)。

-n标志导致clean打印它将执行的remove命令,但不运行它们。

-r标志使clean以递归方式应用于导入路径命名的包的所有依赖项。

-x标志导致clean在执行它们时打印remove命令。

-cache标志导致clean删除整个go构建缓存。

-testcache标志导致clean使go构建缓存中的所有测试结果失效。

-modcache标志导致clean删除整个模块下载缓存,包括版本化依赖项的解压缩源代码。

有关构建标志的更多信息,请参阅“go help build”。

有关指定包的更多信息,请参阅“go help packages”。

显示包或符号的文档

go doc

用法

  1. go doc [-u] [-c] [package|[package.]symbol[.methodOrField]]

Doc打印与其参数(包,const,func,类型,var,方法或结构字段)标识的项目相关联的文档注释,然后是每个“下”的第一级项的一行摘要。 item(包的包级声明,类型的方法等)。

打印Go环境信息

go env

用法

  1. go env [-json] [var ...]

Env打印Go环境信息。

默认情况下,env将信息打印为shell脚本(在Windows上,是批处理文件)。如果给出一个或多个变量名作为参数,则env在其自己的行上打印每个命名变量的值。

-json标志以JSON格式而不是shell脚本打印环境。

更新包以使用新API

go fix

用法:

  1. go fix [packages]

Fix在导入路径命名的包上运行Go fix命令。

有关修复的更多信息,请参阅“go doc cmd / fix”。有关指定包的更多信息,请参阅“go help packages”。

要使用特定选项运行修复,请运行“go tool fix”。

Gofmt(重新格式化)包源

用法:

  1. go fmt [-n] [-x] [packages]

Fmt在导入路径命名的包上运行命令’gofmt -l -w’。它打印修改的文件的名称。

有关gofmt的更多信息,请参阅“go doc cmd / gofmt”。有关指定包的更多信息,请参阅“go help packages”。

-n标志打印将要执行的命令。-x标志在执行时打印命令。

要使用特定选项运行gofmt,请运行gofmt本身。

通过处理源生成Go文件

go generate

用法:

  1. go generate [-run regexp] [-n] [-v] [-x] [build flags] [file.go... | packages]

生成由现有文件中的指令描述的运行命令。这些命令可以运行任何进程,但目的是创建或更新Go源文件。

Go generate永远不会通过go build,go get,go test等自动运行。它必须明确运行。

下载并安装包和依赖项

go get

用法:

  1. go get [-d] [-f] [-t] [-u] [-v] [-fix] [-insecure] [build flags] [packages]

获取导入路径指定的包及其依赖项的下载。然后安装命名包,比如’go install’。

-d标志指示在下载软件包后停止; 也就是说,它指示不要安装包。

-f标志仅在设置-u时有效,强制get -u不验证每个包是否已从其导入路径隐含的源控制存储库中检出。如果源是原始的本地分支,这可能很有用。

-fix标志指示get在解析依赖项或构建代码之前在下载的包上运行修复工具。

-insecure标志允许从存储库中获取并使用不安全的方案(如HTTP)解析自定义域。谨慎使用。

-t标志指示get还下载构建指定包的测试所需的包。

-u标志指示get使用网络更新命名包及其依赖项。默认情况下,get使用网络检出丢失的包,但不使用它来查找现有包的更新。

-v标志启用详细进度和调试输出。

编译并安装包和依赖项

go install

  1. go install [-i] [build flags] [packages]

安装编译并安装导入路径命名的包。

-i标志也会安装命名包的依赖项。

与build命令相比,install命令在编译源码后还会将可执行文件或库文件安装到约定的目录下。

列出包或模块

go list

用法:

  1. go list [-f format] [-json] [-m] [list flags] [build flags] [packages]

列表列出了命名包,每行一个。最常用的标志是-f和-json,它们控制为每个包打印的输出形式。

模块维护

go mod

用法:

  1. go mod <command> [arguments]

下载下载模块到本地缓存 编辑编辑go.mod从工具或脚本 图打印模块需求图 init初始化当前目录中的新模块 整理添加缺失并删除未使用的模块 供应商制作依赖项的销售副本 验证验证依赖项已预期内容 为什么解释为什么包或模块是必需的

编译并运行Go程序

go run

用法:

  1. go run [build flags] [-exec xprog] package [arguments ...]

运行编译并运行命名的主Go包。通常,包被指定为.go源文件的列表,但它也可以是与单个已知包匹配的导入路径,文件系统路径或模式,如“go run”。或’去运行我的/ cmd’。

默认情况下,’go run’直接运行已编译的二进制文件:’a.out arguments …’。如果给出-exec标志,’go run’使用xprog调用二进制文件:

  1. 'xprog a.out参数......'

如果未给出-exec标志,则GOOS或GOARCH与系统默认值不同,并且可以在当前搜索路径上找到名为go$GOOS$GOARCH_exec的程序,“go run”使用该程序调用二进制文件,例如’go_nacl_386_exec a.out arguments …’。这允许在模拟器或其他执行方法可用时执行交叉编译的程序。

Run的退出状态不是已编译二进制文件的退出状态。

测试包

go test

用法:

  1. go test [build / test flags] [packages] [build / test flagstest binary flags]

“Go test”自动测试导入路径命名的包。

运行指定的go工具

用法:

  1. go tool [-n] command [args...]

Tool运行由参数标识的go工具命令。没有参数,它会打印已知工具列表。

-n标志使工具打印将要执行但不执行它的命令。

打印Go版本

go version

用法

  1. go version

报告包中可能出现的错误

用法:

  1. go vet [-n] [-x] [build flags] [vet flags] [packages]

Vet在导入路径命名的包上运行Go vet命令。

有关兽医及其旗帜的更多信息,请参阅“go doc cmd / vet”。有关指定包的更多信息,请参阅“go help packages”。

-n标志打印将要执行的命令。-x标志在执行时打印命令。

详见:

https://golang.org/cmd

links