格式化代码
go fmt ./*/ 格式化当前目录下的代码
-s:简化代码
编译代码
GODEBUG=gctrace=1 开启gc跟踪
CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -ldflags '-s -w' -i -o main ./main.go
-o:生成的位二进制名称
工具集
go generate
运行go generate时,它将扫描与当前包相关的源代码文件,找出所有包含”//go:generate”的特殊注释,提取并执行该特殊注释后面的命令,命令为可执行程序,形同shell下面执行
// 在文件里面添加以下内容,自动生成
//go:generate protoc --go_out=. entry.proto
go build
-gcflags: 传递给编译器的参数
-ldflags: 传递给链接器的参数
-work: 查看编译临时目录
-race: 允许数据竞争检测(仅支持amd64)
-n: 查看但不执行编译指令
-x: 查看并执行编译命令
-a: 强制重新编译所有依赖包
-v: 查看被编译的包名,包括依赖包
-p n:并行编译所使用的CPU数,默认为全部
-o:输出文件名
gcflags:
-B 禁用边界检查
-N 禁用优化
-l 禁用函数内联
-u 禁用unsafe代码
-m 输出优化信息
-S 输出汇编代码
ldflags:
-w 禁用DRAWF调试信息,但不包括符号表
-s 禁用符号表
-X 修改字符串符号值 -X main.VER ‘0.99’ -X main.S ‘abc’
-H 链接文件类型,其中包括windowsgui. cmd/ld/doc.go
upx
- upx可以压缩包大小