learning_notes

学习笔记

View project on GitHub

格式化代码

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可以压缩包大小