build_packages

go打包命令

# 常规打包方法
go build
# 使用 “-dflags” 缩小大小
go build -ldflags '-w -s'
# 使用upx打包为最小程序
upx  ...二进制文件

示例

CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o target/NAME_`date +%Y_%m_%d` ${MAINSRCPATH}
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags '-w -s' -o pkg/PACKAGENAME

multi_platfrom_build

● Mac 打包Linux windows
$ CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build test.go
$ CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build test.go

● Linux打包Mac windows
$ CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build test.go
$ CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build test.go

● windows编译Linux Mac
$ SET CGO_ENABLED=0SET GOOS=darwin3 SET GOARCH=amd64 go build test.go
$ SET CGO_ENABLED=0 SET GOOS=linux SET GOARCH=amd64 go build test.go

参数说明
GOOS:目标可执行程序运行操作系统,支持 darwin,freebsd,linux,windows
GOARCH:目标可执行程序操作系统构架,包括 386,amd64,arm

go 代理配置

go env -w GOPROXY=https://goproxy.cn,direct

fmt 使用

General

%v // 以默认的方式打印变量的值
%T // 打印变量的类型

Integer

%+d  // 带符号的整型,fmt.Printf("%+d", 255)输出+255
%q   // 打印单引号
%o   // 不带零的八进制
%#o  // 带零的八进制
%x   // 小写的十六进制
%X   // 大写的十六进制
%#x  // 带0x的十六进制
%U   // 打印Unicode字符
%#U  // 打印带字符的Unicode
%b   // 打印整型的二进制

Integer width

%5d  // 表示该整型最大长度是5,下面这段代码
%-5d // 则相反,打印结果会自动左对齐
%05d // 会在数字前面补零。

Float

%f(=%.6f)   // 6位小数点
%e(=%.6e)   // 6位小数点(科学计数法)
%g          // 用最少的数字来表示
%.3g        // 最多3位数字来表示
%.3f        // 最多3位小数来表示

String

%s   //正常输出字符串
%q   //字符串带双引号,字符串中的引号带转义符
%#q  //字符串带反引号,如果字符串内有反引号,就用双引号代替
%x   //将字符串转换为小写的16进制格式
%X   //将字符串转换为大写的16进制格式
%x   //带空格的16进制格式

String Width (以5做例子)

%5s     // 最小宽度为5
%-5s    // 最小宽度为5(左对齐)
%.5s    // 最大宽度为5
%5.7s   // 最小宽度为5,最大宽度为7
%-5.7s  // 最小宽度为5,最大宽度为7(左对齐)
%5.3s   // 如果宽度大于3,则截断
%05s    // 如果宽度小于5,就会在字符串前面补零

Struct

%v    // 正常打印。比如:{sam {12345 67890}}
%+v   // 带字段名称。比如:{name:sam phone:{mobile:12345 office:67890}
%#v   // 用Go的语法打印。
// 比如main.People{name:"sam", phone:main.Phone{mobile:"12345", office:"67890"}}

Boolean

%t // 打印true或false

Pointer

%p   // 带0x的指针
%#p  // 不带0x的指针