gogoprotobuf使用

    在go中使用google protobuf,有两个可选用的包goprotobuf(go官方出品)和gogoprotobuf。

    gogoprotobuf是完全兼容google protobuf,而且经过我一些测试,它生成大代码质量确实要比goprotobuf高一些。先忙一一说明其一些选项的意义。

1 gogoproto.goproto_enum_prefix 

  如果选项为false,则生成的代码中不加"E_"。

enum E {
    // option (gogoproto.goproto_enum_prefix) = false;
    A = 0;
    B = 2;
}

const (
	// option (gogoproto.goproto_enum_prefix) = false;
	E_A E = 0
	E_B E = 2
)

or

enum E {
    // option (gogoproto.goproto_enum_prefix) = false;
    A = 0;
    B = 2;
}

const (
	A E = 0
	B E = 2
)

gogoproto.goproto_getters

message test {
    // option (gogoproto.goproto_getters) = false;
    E e = 1;
}

type Test struct {
	E                *E     `protobuf:"varint,1,opt,name=e,enum=test.E" json:"e,omitempty"`
	XXX_unrecognized []byte `json:"-"`
}

func (m *Test) GetE() E {
	if m != nil && m.E != nil {
		return *m.E
	}
	return A
}

type Test struct {
	E                *E     `protobuf:"varint,1,opt,name=e,enum=test.E" json:"e,omitempty"`
	XXX_unrecognized []byte `json:"-"`
}








本文来自:开源中国博客

感谢作者:alexstocks

查看原文:gogoprotobuf使用

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。