BetaThis is a live doc! Anyone with edit access can make updates in real time without having to publish.
By Bryan

使用指定 tag 编译

1go build -tags 'tagA,tagB'
  • -tags 指定编译使用的 tag,多个使用逗号分隔

    • 早期多个 tag 使用空格分隔,但现在该行为已经 deprecated

注入指定变量

1go build -ldflags '-X "my.pkg/version.Version=1.1.1" -X "my.pkg/version.Commit=abcde"'
  • -Ximportpath.name=value 的形式指定要设置的变量

    • name 必须是一个 string 类型的变量(可以导出或不导出)

开启 Race Detector

1go build -race
  • -race 启用 DataRace Detector(仅部分系统可用)

减少最终可执行文件大小(移除符号)

1go build -ldflags '-w -s'
  • -w 禁用 DWARF 信息( → 无法使用 gdb 调试)

  • -s 移除符号表

逃逸分析

1go build -gcflags '-m -l'
  • -m 打印优化计划

  • -l 停用内联

关闭所有优化

1go build -gcflags '-N -l'
  • -N 关闭编译器优化

  • -l 停用内联