go-doc-proto

安装

1
2
3
4
5
6
7
8
9
10
11
# protoc 下载
https://github.com/protocolbuffers/protobuf/releases/tag/v3.11.2


# 安装proto工具
go install code.google.com/p/goprotobuf/proto
go install code.google.com/p/goprotobuf/protoc-gen-go

# 把工具exe目录配置到环境变量
# 在 $GOPATH/bin 目录下,如果没有,自行编译源码
D:\self\goserver\bin

构建exe

1
2
3
# protoc-gen-go
# 进入到protoc-gen-go 目录,执行命令 go build ./main.go
https://github.com/golang/protobuf

调整

去掉默认值不序列化

找到table_marshal.go,修改nozero变量为false

1
2
3
4
5
6
7
8
9
10
11
12
13
func (fi *marshalFieldInfo) setMarshaler(f *reflect.StructField, tags []string) {
switch f.Type.Kind() {
case reflect.Map:
// map field
fi.isPointer = true
fi.sizer, fi.marshaler = makeMapMarshaler(f)
return
case reflect.Ptr, reflect.Slice:
fi.isPointer = true
}
// fi.sizer, fi.marshaler = typeMarshaler(f.Type, tags, true, false)
fi.sizer, fi.marshaler = typeMarshaler(f.Type, tags, false, false)
}