...
Package descriptor
Package descriptor provides functions for obtaining protocol buffer
descriptors for generated Go types.
These functions cannot go in package proto because they depend on the
generated protobuf descriptor messages, which themselves depend on proto.
▾ Example (Options)
Code:
var msg *tpb.MyMessageSet
_, md := descriptor.ForMessage(msg)
if md.GetOptions().GetMessageSetWireFormat() {
fmt.Printf("%v uses option message_set_wire_format.\n", md.GetName())
}
Output:
MyMessageSet uses option message_set_wire_format.
func ForMessage(msg Message) (fd *protobuf.FileDescriptorProto, md *protobuf.DescriptorProto)
ForMessage returns a FileDescriptorProto and a DescriptorProto from within it
describing the given message.
Message is a proto.Message with a method to return its descriptor.
Message types generated by the protocol compiler always satisfy
the Message interface.
type Message interface {
proto.Message
Descriptor() ([]byte, []int)
}