gogoprotobuf

gogoprotobuf使用(下)

我怕爱的太早我们不能终老 提交于 2019-12-10 08:41:36
声明:版权所有,谢绝转载。 承接上文 《gogoprotobuf使用(上)》 ,继续说明gogoprotobuf的各个option。 9 gogoproto.testgen & gogoproto.testgen_all testgen选项为true,则gogo会为相应的message生成一个测试用例与性能测试用例。testgen_all则为相应的package level的option。 pb code: option (gogoproto.testgen_all) = true; option (gogoproto.benchgen_all) = true; message A { string msg = 1; } go code: package test import testing "testing" import math_rand "math/rand" import time "time" import github_com_gogo_protobuf_proto "github.com/gogo/protobuf/proto" import encoding_json "encoding/json" func TestAProto(t *testing.T) { popr := math_rand.New(math_rand.NewSource(time.Now

gogoprotobuf使用(上)

。_饼干妹妹 提交于 2019-12-10 08:25:01
声明:版权所有,谢绝转载。 在go中使用google protobuf,有两个可选用的包: goprotobuf (go官方出品)和 gogoprotobuf (gogo组织出品^_^)。 gogoprotobuf能够完全兼容google protobuf。而且经过我一些测试,它生成大代码质量确实要比goprotobuf高一些,主要是它在goprotobuf之上extend了一些option。这些option也是有级别区分的,有的option只能修饰field,有的可以修饰enum,有的可以修饰message,有的是修饰package(即对整个文件都有效)。下面一一说明其一些选项的意义。 另外,本文的所有proto示例都是proto v3格式。 1 gogoproto.goproto_enum_prefix 如果选项为false,则生成的代码中不加"E_"。 pb code: enum E { // option (gogoproto.goproto_enum_prefix) = false; A = 0; B = 2; } go code: const ( // option (gogoproto.goproto_enum_prefix) = false; E_A E = 0 E_B E = 2 ) or pb code: enum E { // option