go build

go build 命令用来编译构建项目,编译时会搜索当前目录下的所有 .go 文件,并在当前目录下生成与目录同名的可执行文件。

编译参数

go build -gcflags "-N -l -u"

参数说明

  • -N:禁用优化
  • -l: 禁用函数内联
  • -u: 禁用unsafe代码
  • -m:输出优化信息
  • -S: 输出汇编代码

链接参数

go build -ldflags "-X main.VERSION=1.0.0 -X 'main.BUILD_TIME=`date`'"

参数说明

  • -w:禁用调试信息,但不包括符号表;此时无法使用gdb调试
  • -s:禁用符号表
  • -X:修改程序中string类型的值,如上面例子中会修改main包中的VESION和BUILD_TIME两个字符串的值。

竞态检测

go build -race 

设置 -race 标志可以开启竞态检测器,程序运行结束后,会将多个 goroutine 竞争访问的变量信息打印出来,用于调试。

go vet

go vet 是一个检查源码中静态错误的工具,可以检测出任何可疑,异常或者无用的代码。

go vet 是 go tool vet 的简单封装,go vet 只能检测当前目录下的 go 源文件,不能递归子目录。

go env

打印 go 的环境信息

gofmt

格式化代码风格为官方统一风格。

gofmt -w ./

go version

打印 go 的版本