go内置命令

build(compile packages and dependencies)

编译指定的源码文件或代码包及依赖包。

  1. command-line-arguments虚拟代码包的导入路径和名称
  2. -n打印所用命令但不执行,-x打印并执行
  3. -race开启竞态条件检测
  4. 循环依赖会输出错误信息并退出,若无则形成含有重复元素的依赖树,且先编译最左分支节点。
  5. -ldflags指定需要传递给go tool link命令的标记列表
  6. -compiler指定当前使用的编译器,可选gcgccgo

clean(remove object files)

删除执行其他命令时产生的一些文件和目录(-n打印用到的系统命令,但不执行;-x既打印又执行)

doc(show documentation for package or symbol)

打印程序实体(变量、常量、函数、结构体、接口)的文档

  1. -cmd打印main包中可导出的实体
  2. go doc -u http.Response打印不可导出的实体
  3. godoc -src sync/atomic Load同时打印源码
  4. godoc -ex fmt Printf打印示例代码
  5. godoc -http=:36524搭建一个文档web服务器

env(print Go environment information)

打印go的环境变量信息,如计算架构、操作系统、GOROOT、GOPATH、GOBIN等信息。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
GOARCH="amd64"
GOBIN=""
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/home/vagrant/Code/go"
GORACE=""
GOROOT="/usr/local/go"
# 工具目录
GOTOOLDIR="/usr/local/go/pkg/tool/linux_amd64"
CC="gcc"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build324202037=/tmp/go-build -gno-record-gcc-switches"
CXX="g++"
CGO_ENABLED="1"

fix(run go tool fix on packages)

将指定代码包中的Go语言源码文件中的旧版本代码修正为新版本的代码,go tool fix

fmt(run gofmt on package sources)

格式化golang程序,使用8个空格的tab缩进。

generate(generate Go files by processing source)

编译前自动生成代码。

get(download and install packages and dependencies)

下载或更新指定的代码包并编译和安装,支持多种VCS

  1. 通过设定自定义域名的HTML meta信息<meta name="go-import" content="import-prefix vcs repo-root">来实现自定义导入
  2. -d只下载,不安装
  3. -x看到go get命令执行过程中使用的命令
  4. -u下载更新已有代码包及其依赖

install(compile and install packages and dependencies)

编译并安装指定的代码包及依赖包。

  1. -a强行重新安装指定代码包及其依赖
  2. go install -a -v -work [packages]打印包名&输出临时工作目录且保留
  3. 依赖优先

list(list packages)

列出指定代码包的信息

  1. go list -json text/template
  2. go list -f net/http
  3. go list ./...

run(compile and run Go program)

编译并运行源码文件,属于main包

test(test packages)

测试指定的代码包

  1. 测试源码文件以_test.go为后缀,测试函数以Test为前缀且有testing.T类型的参数
  2. -c生成运行测试的可执行文件,但不执行
  3. -i安装运行测试所需的依赖包,但不编译和运行

tool(run specified go tool)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
addr2line
api
asm
cgo
compile
cover
dist
doc
fix
link
nm
objdump
pack
pprof
trace
vet
yacc

version(print Go version)

打印go版本及架构

vet(run go tool vet on packages)

  1. go tool vet,代码静态错误检查工具。
  2. 默认-all开启
  3. -atomic检查原子赋值语句和自赋值语句
  4. -printf检查格式化打印函数和非格式化打印函数
  5. -rangeloops检查go,defer等可能被延迟处理的代码中直接使用迭代变量
  6. -structtags检查结构体的字段标签
  7. -unreachable检查是否有代码永远不会被执行